我认为这是引用问题。
RecyclerViews似乎共享具有相同引用的项目。
我创建了两个回收站,我制作了一个列表,并通过创建另一个回收站的方法发送列表。
例如,
val myAdapter = MyAdapter()
val myList = ArrayList<String>()
val yourAdapter = MyAdapter()
val yourList: ArrayList<String>? = null
private fun init(){
initAction()
list.add("lion")
list.add("cat")
list.add("dog")
myAdapter.setList(list)
rcvMy.adapter = myAdapter
initOtherRecyclerView(list)
}
private fun initOtherRecyclerView(mList: ArrayList<String>){
yourList = mList
yourAdapter.setList(yourList)
rcvYour.adapter = yourAdapter
}
private fun initAction(){
btnAdd.setOnClickListener{
myAdapter.items.add("Hello")
myAdapter.notifyDataSetChanged()
}
}
每当我单击btnAdd
时,它都会在rcvMy
中添加两个项目。
如何剪切引用?
两个适配器都持有相同的List
,您可以使用两个单独的列表。每当您需要列表中的数据时,都可以查看Adapter
。下面是一个有问题的例子。
private fun initOtherRecyclerView(mList: ArrayList<String>){
yourList.addAll(mList);
yourAdapter.setList(yourList)
rcvYour.adapter = yourAdapter
}