如何从recyclerview发送多个选中的项目到另一个活动- kotlin Android



我有联系人列表,在这里我选择多个项目并传递到另一个活动,在Recyclerview中选择多个项目后我如何将其传递到另一个活动这是我的适配器类


override fun onBindViewHolder(holder: ContactViewHolder, position: Int) {
val item = contact[position]
holder.name.text = item.name
holder.number.text = item.number
holder.linlay.setOnLongClickListener{
selectItem(holder,item,position)
true
}
holder.linlay.setOnClickListener{
if(itemSelected.contains(position)){
itemSelected.remove(position)
holder.linlay.setBackgroundColor(Color.DKGRAY)
item.isSelect = false
if(itemSelected.isEmpty()){
isEnable=false
}
}
else if(isEnable){
selectItem(holder,item,position)
}
}
}
private fun selectItem(holder: ContactAdapter.ContactViewHolder, item: ContactModel, position: Int) {
isEnable = true
itemSelected.add(position)
item.isSelect = true
holder.linlay.setBackgroundColor(Color.YELLOW)
}

Where button for going to another activity is instead of recycleview is in mainActivity class

class Mainactivity : AppComapctActivity(){
ovveride fun onCreate(savedInstanceState: Bundle?){
super.onCreate(savedInstanceState)
setContentView(R.layout.activity_main)
val btn_send = findViewById<Button>(R.id.btn_send)
btn_send.setOnClickListner{
val intent = Intent(this,HomeActivity::class.java)
startActivity(intent)
}
}

当你在selectItem方法中选择一个联系人时,你应该在这个列表中创建一个像mutableelist这样的联系人的MutableList,你将存储之前选择的联系人,因为你可以删除/更新所选的联系人列表,你应该使用MutableList,在你选择所有的联系人后,你应该有一个按钮去下一个屏幕。在那里你应该只发送ContactModel的MutableList

让我为你写一些伪代码

private fun selectItem(holder: ContactAdapter.ContactViewHolder, item: ContactModel, position: Int) {
isEnable = true
itemSelected.add(position)
item.isSelect = true
holder.linlay.setBackgroundColor(Color.YELLOW)
if(item.isSelect)
myMutableContactList.add(item)
else
myMutableContactList.remove(item)
}

记得先创建mutableList,如

val myMutableContactList = mutableListOf<ContactModel>()

如果你有一个按钮可以跳转到下一个屏幕就发送这个列表

当您按下按钮并转到下一个片段/活动时,一个好的做法是将此mutablelist转换为list,因为它在开始发送后不会改变。

您可以通过在mutableList

上使用toList()来实现。

最新更新