Kotlin - 无法从片段更新 RecyclerView
Kotlin - Unable to update RecyclerView from fragment
我有一个带有按钮的片段 (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()
}
我认为问题可能是因为我在 FragmentAdd 中创建了 HomeAdapter
的另一个对象。如果是这样,我应该如何确保它引用原始对象。
问题似乎是创建多个 HomeAdapter 实例。
您可以使用伴随对象创建单个对象
在FragmentAdd
companion object {var homeAdapter:HomeAdapter?=null}
然后FragmentAdd
homeAdapter = HomeAdapter(FragmentHome(),arrayList)
homeAdapter.updateRecyclerView(arrayList)
在FragmentHome
recyclerView!!.adapter=FragmentAdd.homeAdapter!!
我有一个带有按钮的片段 (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()
}
我认为问题可能是因为我在 FragmentAdd 中创建了 HomeAdapter
的另一个对象。如果是这样,我应该如何确保它引用原始对象。
问题似乎是创建多个 HomeAdapter 实例。
您可以使用伴随对象创建单个对象
在FragmentAdd
companion object {var homeAdapter:HomeAdapter?=null}
然后FragmentAdd
homeAdapter = HomeAdapter(FragmentHome(),arrayList)
homeAdapter.updateRecyclerView(arrayList)
在FragmentHome
recyclerView!!.adapter=FragmentAdd.homeAdapter!!