Skip to content
This repository was archived by the owner on Aug 8, 2022. It is now read-only.

Commit 2fbad65

Browse files
authored
Merge branch 'master' into fix-diff
2 parents e3b956d + f6a2136 commit 2fbad65

6 files changed

Lines changed: 59 additions & 43 deletions

File tree

CHANGELOG.md

Lines changed: 15 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,20 @@
11
# Testify Change Log
22

3+
## Unreleased
4+
5+
### Library
6+
7+
#### Updates
8+
9+
- AGP from 4.2.0-beta6 to 4.2.0
10+
11+
### Sample
12+
13+
#### Changes
14+
15+
- Remove kotlin-android-extensions from Sample and replace with viewBinding
16+
17+
318
## 1.1.0-beta1
419

520
### Library

Sample/build.gradle

Lines changed: 3 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,5 @@
11
buildscript {
22
repositories {
3-
jcenter()
43
google()
54
}
65
dependencies {
@@ -10,7 +9,6 @@ buildscript {
109

1110
apply plugin: 'com.android.application'
1211
apply plugin: 'kotlin-android'
13-
apply plugin: 'kotlin-android-extensions'
1412
apply plugin: 'com.shopify.testify'
1513

1614
android {
@@ -42,6 +40,9 @@ android {
4240
}
4341
}
4442

43+
buildFeatures {
44+
viewBinding true
45+
}
4546
}
4647

4748
dependencies {

Sample/src/main/java/com/shopify/testify/sample/clients/details/ClientDetailsView.kt

Lines changed: 17 additions & 14 deletions
Original file line numberDiff line numberDiff line change
@@ -27,23 +27,26 @@ import android.content.Context
2727
import android.util.AttributeSet
2828
import android.widget.LinearLayout
2929
import androidx.core.view.isVisible
30-
import kotlinx.android.synthetic.main.view_client_details.view.address as addressView
31-
import kotlinx.android.synthetic.main.view_client_details.view.address_row as addressRowViewGroup
32-
import kotlinx.android.synthetic.main.view_client_details.view.heading as headingView
33-
import kotlinx.android.synthetic.main.view_client_details.view.phone as phoneView
34-
import kotlinx.android.synthetic.main.view_client_details.view.phone_row as phoneRowViewGroup
35-
import kotlinx.android.synthetic.main.view_client_details.view.profile_image as profileImage
30+
import com.shopify.testify.sample.databinding.ViewClientDetailsBinding
3631

37-
class ClientDetailsView @JvmOverloads constructor(context: Context, attrs: AttributeSet? = null) : LinearLayout(context, attrs) {
32+
class ClientDetailsView @JvmOverloads constructor(context: Context, attrs: AttributeSet? = null) :
33+
LinearLayout(context, attrs) {
34+
35+
lateinit var binding: ViewClientDetailsBinding
36+
37+
override fun onFinishInflate() {
38+
super.onFinishInflate()
39+
binding = ViewClientDetailsBinding.bind(this)
40+
}
3841

3942
fun render(state: ClientDetailsViewState) {
40-
profileImage.setImageResource(state.avatar)
41-
headingView.text = state.heading
43+
binding.profileImage.setImageResource(state.avatar)
44+
binding.heading.text = state.heading
4245

43-
addressRowViewGroup.isVisible = state.address != null
44-
addressView.text = state.address
46+
binding.addressRow.isVisible = state.address != null
47+
binding.address.text = state.address
4548

46-
phoneRowViewGroup.isVisible = state.phoneNumber != null
47-
phoneView.text = state.phoneNumber
49+
binding.phoneRow.isVisible = state.phoneNumber != null
50+
binding.phone.text = state.phoneNumber
4851
}
49-
}
52+
}

Sample/src/main/java/com/shopify/testify/sample/clients/index/ClientListActivity.kt

Lines changed: 5 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -29,8 +29,7 @@ import com.google.android.material.snackbar.Snackbar
2929
import com.shopify.testify.sample.R
3030
import com.shopify.testify.sample.clients.MockClientData
3131
import com.shopify.testify.sample.clients.details.ClientDetailsActivity.Companion.startClientDetailsActivity
32-
import kotlinx.android.synthetic.main.activity_client_list.fab
33-
import kotlinx.android.synthetic.main.activity_client_list.root_view as rootView
32+
import com.shopify.testify.sample.databinding.ActivityClientListBinding
3433

3534
class ClientListActivity : AppCompatActivity(), ClientListFragment.OnListFragmentInteractionListener {
3635

@@ -40,11 +39,13 @@ class ClientListActivity : AppCompatActivity(), ClientListFragment.OnListFragmen
4039

4140
override fun onCreate(savedInstanceState: Bundle?) {
4241
super.onCreate(savedInstanceState)
43-
setContentView(R.layout.activity_client_list)
42+
43+
val binding = ActivityClientListBinding.inflate(layoutInflater)
44+
setContentView(binding.rootView)
4445

4546
supportActionBar?.title = getString(R.string.client_list_title)
4647

47-
fab.setOnClickListener { view ->
48+
binding.fab.setOnClickListener { view ->
4849
Snackbar.make(view, "TODO: Add a client", Snackbar.LENGTH_LONG).show()
4950
}
5051
}

Sample/src/main/java/com/shopify/testify/sample/clients/index/ClientListRecyclerViewAdapter.kt

Lines changed: 18 additions & 22 deletions
Original file line numberDiff line numberDiff line change
@@ -23,7 +23,6 @@
2323
*/
2424
package com.shopify.testify.sample.clients.index
2525

26-
2726
import android.view.LayoutInflater
2827
import android.view.View
2928
import android.view.ViewGroup
@@ -34,48 +33,45 @@ import androidx.recyclerview.widget.RecyclerView
3433
import com.shopify.testify.sample.R
3534
import com.shopify.testify.sample.clients.MockClientData
3635
import com.shopify.testify.sample.clients.index.ClientListFragment.OnListFragmentInteractionListener
37-
import kotlinx.android.synthetic.main.client_list_item.view.description
38-
import kotlinx.android.synthetic.main.client_list_item.view.name
39-
import kotlinx.android.synthetic.main.client_list_item.view.profile_image
40-
36+
import com.shopify.testify.sample.databinding.ClientListItemBinding
4137

42-
class ClientListRecyclerViewAdapter(private val values: List<MockClientData.Client>, private val listener: OnListFragmentInteractionListener?) : RecyclerView.Adapter<ClientListRecyclerViewAdapter.ViewHolder>() {
38+
class ClientListRecyclerViewAdapter(
39+
private val values: List<MockClientData.Client>,
40+
private val listener: OnListFragmentInteractionListener?
41+
) : RecyclerView.Adapter<ClientListRecyclerViewAdapter.ViewHolder>() {
4342

44-
private val onClickListener: View.OnClickListener
45-
46-
init {
47-
onClickListener = View.OnClickListener { v ->
48-
val item = v.tag as MockClientData.Client
49-
listener?.onListFragmentInteraction(item)
50-
}
43+
private val onClickListener: View.OnClickListener = View.OnClickListener { v ->
44+
val item = v.tag as MockClientData.Client
45+
listener?.onListFragmentInteraction(item)
5146
}
5247

5348
override fun onCreateViewHolder(parent: ViewGroup, viewType: Int): ViewHolder {
54-
val view = LayoutInflater.from(parent.context).inflate(R.layout.client_list_item, parent, false)
55-
return ViewHolder(view)
49+
val binding = ClientListItemBinding.inflate(LayoutInflater.from(parent.context), parent, false)
50+
return ViewHolder(binding)
5651
}
5752

5853
override fun onBindViewHolder(holder: ViewHolder, position: Int) {
5954
val item = values[position]
6055

61-
val context = holder.view.context
62-
@DrawableRes val avatarDrawableId = context.resources.getIdentifier(item.avatar, "drawable", context.packageName)
56+
val context = holder.itemView.context
57+
@DrawableRes val avatarDrawableId =
58+
context.resources.getIdentifier(item.avatar, "drawable", context.packageName)
6359

6460
holder.nameView.text = item.name
6561
holder.descriptionView.text = context.getString(R.string.client_since, item.date)
6662
holder.avatar.setImageResource(avatarDrawableId)
6763

68-
with(holder.view) {
64+
with(holder.itemView) {
6965
tag = item
7066
setOnClickListener(onClickListener)
7167
}
7268
}
7369

7470
override fun getItemCount(): Int = values.size
7571

76-
inner class ViewHolder(val view: View) : RecyclerView.ViewHolder(view) {
77-
val nameView: TextView = view.name
78-
val descriptionView: TextView = view.description
79-
val avatar: ImageView = view.profile_image
72+
inner class ViewHolder(binding: ClientListItemBinding) : RecyclerView.ViewHolder(binding.root) {
73+
val nameView: TextView = binding.name
74+
val descriptionView: TextView = binding.description
75+
val avatar: ImageView = binding.profileImage
8076
}
8177
}

build.gradle

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -7,7 +7,7 @@ buildscript {
77

88
ext {
99
versions = [
10-
'androidGradlePlugin': '4.2.0-beta06', // https://developer.android.com/studio/releases/gradle-plugin.html
10+
'androidGradlePlugin': '4.2.0', // https://developer.android.com/studio/releases/gradle-plugin.html
1111
'androidx' : [
1212
'constraintLayout': '2.0.0-beta4', // https://developer.android.com/jetpack/androidx/releases
1313
'appCompat' : '1.2.0', // https://developer.android.com/jetpack/androidx/releases

0 commit comments

Comments
 (0)