首页 > 解决方案 > 无法将文本设置为片段;适配器类的 Textview。错误我正在获取 lateinit 属性绑定尚未初始化

问题描述

片段类

class Load_Frag : Fragment(), clicklistener {
    private lateinit var binding: FragmentLoadBinding

    override fun onCreate(savedInstanceState: Bundle?) {
        super.onCreate(savedInstanceState)
    }

    override fun onCreateView(inflater: LayoutInflater, container: ViewGroup?,
        savedInstanceState: Bundle?): View? {
        //return inflater.inflate(R.layout.fragment_load_, container, false)
        binding = FragmentLoadBinding.inflate(inflater,container,false)
        return binding.root
    }

    override fun onViewCreated(view: View, savedInstanceState: Bundle?) {
        super.onViewCreated(view, savedInstanceState)
        loadfrag_recyclerview()
    }



    private fun loadfrag_recyclerview() {
        val Loadfrag_Invoiceadapter =
            Loadfrag_Invoiceadapter(this@Load_Frag)
        binding.rvLoadFragInvoices.setLayoutManager(LinearLayoutManager(context, LinearLayoutManager.VERTICAL, false))
        binding.rvLoadFragInvoices.adapter = Loadfrag_Invoiceadapter
        binding.rvLoadFragInvoices.setItemViewCacheSize(20)
    }


    override fun onitemclick(item: String) {
        binding.tvLoadfragInvcount.text = item    **//This is the error line**
    }

}

适配器类

class Loadfrag_Invoiceadapter(loadFrag: Load_Frag) : RecyclerView.Adapter<Loadfrag_Invoicesholder>() {
    var context: Context? = null
    private var frag:Load_Frag
    var count:Int =0
    lateinit var listener: clicklistener

    override fun onCreateViewHolder(parent: ViewGroup, viewType: Int): Loadfrag_Invoicesholder {
        val layoutInflater = LayoutInflater.from(parent.context)
        val v: View = layoutInflater.inflate(R.layout.loadscreen_recyclerview_item, parent, false)
        context = parent.getContext();
        return Loadfrag_Invoicesholder(v)
    }

    override fun onBindViewHolder(holder: Loadfrag_Invoicesholder, position: Int) {
        holder.crdvwLoadfragitem.setOnClickListener(object : View.OnClickListener {
            override fun onClick(v: View?) {
                if(!holder.checkboxLoadfrag.isChecked){
                    holder.checkboxLoadfrag.isChecked = true
                    count++
                    System.out.println("check: "+count+"/"+20)
                    listener.onitemclick(count.toString())
                }else{
                    holder.checkboxLoadfrag.isChecked = false
                    count--
                    listener.onitemclick(count.toString())
                    System.out.println("uncheck: "+count+"/"+20)
                }
            }
        })


    }
    init {
        frag = Load_Frag()
        listener=(frag)
    }

    override fun getItemCount(): Int {
        return 20
    }

    override fun getItemId(position: Int): Long {
        return super.getItemId(position)
    }

    override fun getItemViewType(position: Int): Int {
        return super.getItemViewType(position)
    }
}

界面

interface clicklistener  {
    fun onitemclick(item:String)
}

我在 Fragment 中有 Textview,当用户单击 Recyclerview 项目时,我想更新该 textview 的文本。该 textview 的文本应该得到更新。

标签: kotlinandroid-fragmentsandroid-recyclerviewkotlin-android-extensions

解决方案


推荐阅读