我有一個帶有按鈕的片段(FragmentAdd),它應該更新另一個片段(FragmentHome)的 RecyclerView。為什么 RecyclerView 沒有更新?
片段添加:
saveBtn?.setOnClickListener{
arrayList = getUpdatedList()
val homeAdapter = HomeAdapter(FragmentHome(),arrayList)
homeAdapter.updateRecyclerView(arrayList)
}
片段主頁:
override fun onCreateView(inflater: LayoutInflater, container: ViewGroup?, savedInstanceState: Bundle?): View? {
val view = inflater.inflate(R.layout.fragment_home, container, false)
recyclerView = view.findViewById(R.id.recyclerView)
recyclerView!!.setHasFixedSize(true)
recyclerView!!.layoutManager = LinearLayoutManager(context)
recyclerView!!.adapter = HomeAdapter(this, transactList)
return view
}
家庭配接器:
fun updateRecyclerView(newList: ArrayList<Any>){
itemsList.clear()
itemsList.addAll(newList)
this.notifyDataSetChanged()
}
我認為問題可能是因為我HomeAdapter在FragmentAdd中創建了另一個物件。如果是這樣,我應該如何確保它參考原始物件。
uj5u.com熱心網友回復:
問題似乎是創建多個HomeAdapter實體。
您可以使用伴隨物件創建單個物件
在片段中添加
companion object {var homeAdapter:HomeAdapter?=null}
然后片段添加
homeAdapter = HomeAdapter(FragmentHome(),arrayList)
homeAdapter.updateRecyclerView(arrayList)
在FragmentHome
recyclerView!!.adapter=FragmentAdd.homeAdapter!!
轉載請註明出處,本文鏈接:https://www.uj5u.com/qita/443409.html
標籤:安卓 科特林 android-recyclerview
