我有一个自定义RecyclerAdapter
,其中包含以下ViewHolder
类,它将两个变量绑定到视图中:
inner class ViewHolder(private val binding: ViewDataBinding) :
RecyclerView.ViewHolder(binding.root) {
fun bind(obj: Any) {
binding.setVariable(BR.viewHolder, this)
binding.setVariable(BR.obj, obj)
binding.executePendingBindings()
}
fun onTextChanged(s: CharSequence, start: Int, before: Int, count: Int) {
Log.i("test", "Change is here!")
}
fun onTextClicked() {
Log.i("test", "Click is here!")
}
}
这个相应的(minnimal)视图:
<layout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:app="http://schemas.android.com/apk/res-auto">
<data>
<variable
name="holder"
type="(...).adapters.ContactPropertyRecyclerAdapter.ViewHolder" />
<variable
name="obj"
type="(...).models.Address" />
</data>
<android.support.constraint.ConstraintLayout
android:layout_width="match_parent"
android:layout_height="wrap_content">
<EditText
android:id="@+id/streetEditText"
android:layout_width="0dp"
android:layout_height="wrap_content"
android:layout_marginEnd="16dp"
android:layout_marginTop="16dp"
android:ems="10"
android:inputType="textPersonName"
android:text="@{obj.street}"
android:onTextChanged="@{(s, start, before, count) -> holder.onTextChanged(s, start, before, count)}"
android:onClick="@{() -> holder.onTextClicked()}"
app:layout_constraintEnd_toEndOf="parent"
app:layout_constraintStart_toStartOf="parent"
app:layout_constraintTop_toTopOf="parent" />
</android.support.constraint.ConstraintLayout>
</layout>
这两个函数似乎都没有被触发,因为我可以从Log中看到。没有抛出错误。 AndroidStudio正在认识到这两种功能的用法。
obj
变量似乎工作正常,我已经尝试使用额外的类,结果相同。
答案 0 :(得分:1)
您正在设置变量viewHolder
binding.setVariable(BR.viewHolder, this)
虽然您只定义了holder
变量。
因此holder
总是null
。