
[英]Databinding: ObservableField of custom object it is not working properly
[英]NPE when use custom observable object (ObservableField)
app / build.gradle中的Android Studio 3.6:
dataBinding {
enabled = true
}
这是我的活动:
import androidx.databinding.ObservableField
class MyActivity : AppCompatActivity() {
lateinit var myAdapterObservableField : ObservableField<MyAdapter >
override fun onCreate(savedInstanceState: Bundle?) {
super.onCreate(savedInstanceState)
dataBinding =
DataBindingUtil.setContentView<SelectionActivityBinding>(
this,
R.layout.selection_activity
)
dataBinding.setHandler(this)
myAdapterObservableField = ObservableField<MyAdapter>()
dataBinding.viewPager2.setPageTransformer(ZoomOutPageTransformer())
dataBinding.viewPager2.adapter = myAdapterObservableField .get()
}
selectionViewModel.getMyListLiveData().observe(this, Observer {
myAdapterObservableField .get()!!.setList(it) // here throw NPE
myAdapterObservableField .notifyChange()
})
这是我的适配器
import android.view.LayoutInflater
import android.view.View
import android.view.ViewGroup
import androidx.recyclerview.widget.RecyclerView
class MyAdapter : RecyclerView.Adapter<MyAdapter.MyViewHolder>() {
var myList: List<Person> = listOf()
override fun onCreateViewHolder(parent: ViewGroup, viewType: Int): MyViewHolder{
return MyViewHolder(parent)
}
override fun onBindViewHolder(holder: MyViewHolder, position: Int) {
holder.bind(myList[position], position)
}
fun setList(myList: List<Person>) {
this.myList= myList
notifyDataSetChanged()
}
override fun getItemCount(): Int = myList.size
}
为什么
myAdapterObservableField.get()!!
返回null?
我在onCreate
方法中将其初始化
myAdapterObservableField = ObservableField<MyAdapter>()
但在这一行中抛出NPE:
myAdapterObservableField .get()!!.setList(it)
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.