如何将多个选定项目从 recyclerview 发送到另一个 activity - kotlin Android

How to send multiple selected utem from recyclerview to another activity - kotlin Android

我有联系人列表,其中我 select 多个项目并传递给另一个 activity ,在 select 多个项目后在 Recyclerview 中我如何将它传递给另一个 activity 这是我的适配器 class


    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)
    }

在 mainActivity class

中,用于转到另一个 activity 的按钮而不是 recyclerview
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 方法中 select 一个联系人时,您应该在该列表中创建一个 MutableList 联系人,例如 MutableList,您将存储 selected 联系人以前,由于您可以 remove/update selected 联系人列表,您应该在 select 所有联系人之后使用 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>()

然后,如果您有转到下一个屏幕的按钮,只需发送此列表

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

你可以通过简单地在你的 mutableList

上使用 toList() 来完成