繁体   English   中英

使用自定义可观察对象(ObservableField)时的NPE

[英]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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM