繁体   English   中英

为什么私有的Lateinit var mCustomAdapter CustomAdapter会导致Kotlin中出现预期的属性getter或setter?

[英]Why does private lateinit var mCustomAdapter CustomAdapter cause Property getter or setter expected in Kotlin?

代码mRecyclerView.adapter= CustomAdapter(allList)效果很好,我希望定义一个私有var mCustomAdapter,并在稍后分配值。

但是代码private lateinit var mCustomAdapter CustomAdapter导致错误,我该如何解决? 谢谢!

代码A

class UIMain : AppCompatActivity() {


    private lateinit var mCustomAdapter CustomAdapter  //Error

    override fun onCreate(savedInstanceState: Bundle?) {
        super.onCreate(savedInstanceState)
        setContentView(R.layout.layout_main)

        ...

        mRecyclerView.layoutManager = LinearLayoutManager(this, LinearLayout.VERTICAL, false)
        mRecyclerView.adapter= CustomAdapter(allList) //OK

    }

代码B

class CustomAdapter (val backupItemList: List<MSetting>) : RecyclerView.Adapter<CustomAdapter.ViewHolder>() {

    private var mSelectedItem = -1

    //this method is returning the view for each item in the list
    override fun onCreateViewHolder(parent: ViewGroup, viewType: Int): CustomAdapter.ViewHolder {
        val v = LayoutInflater.from(parent.context).inflate(R.layout.item_recyclerview, parent, false)

        return ViewHolder(v)
    }


    fun getSelectedItem():Int{
        return  mSelectedItem
    }

    //this method is binding the data on the list
    override fun onBindViewHolder(holder: CustomAdapter.ViewHolder, position: Int) {
        holder.bindItems(backupItemList[position])
        holder.itemView.radioButton.setChecked(position == mSelectedItem);
    }

    //this method is giving the size of the list
    override fun getItemCount(): Int {
        return backupItemList.size
    }

    //the class is hodling the list view
    inner class ViewHolder(itemView: View) : RecyclerView.ViewHolder(itemView) {

        fun bindItems(aMSetting: MSetting) {

            //itemView.radioButton.isChecked=false

            itemView.radioButton.tag=aMSetting._id
            itemView.textViewUsername.text=aMSetting.createdDate.toString()
            itemView.textViewAddress.text=aMSetting.description

            itemView.radioButton.setOnClickListener {
                mSelectedItem=getAdapterPosition()
                notifyDataSetChanged();
            }

        }

    }

}

您不见了: mCustomAdapter变量的末尾

尝试这个:

private lateinit var mCustomAdapter: CustomAdapter

查看更多: https : //kotlinlang.org/docs/reference/basic-syntax.html#defining-variables

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

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