繁体   English   中英

如何实现多选recyclerview?

[英]How to implement multi selection recyclerview?

我正在尝试在项目中实现一个支持多选的 RecyclerView,我已经看到了关于这个主题的其他问题,但主要区别是我需要能够在适配器之外进行选择。
例如,假设我有一个名为 SelectionDialog 的对话框,该对话框显示了一些选择选项,例如“全选”,所以如果我单击它,我应该能够选择我的所有 recyclerview 的项目,并且这些项目应该将某些内容更改为让用户知道选择了哪些,在我的情况下,我决定(使用 MaterialCardView)为项目添加一点颜色边框以区分它是否被选中。
我可以使用适配器中的公共方法选择所有任务(将它们的 isSelected 布尔属性更改为 true),但是,我无法弄清楚如何将该边框添加到相应项目的 ViewHolder,主要是因为我无法访问到它。
这是我的代码:

//SelectDialog    
AllB.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View view) {
                listadapter.SelectAll();
                Touched = true;
                dismiss();
            }
        });

//ListAdapter    
public void SelectAll()    
    {    
        for(int i = 0; i < mList.size(); i++)    
            ListItem item = mList.get(i);   
            item.setSelected(true);
            //I should be able to add the border to the item here     
        }   
    }   

调用notifyDataSetChanged(); //列表适配器

public void SelectAll()    
    {    
        for(int i = 0; i < mList.size(); i++)    {
            ListItem item = mList.get(i);   
            item.setSelected(true);
            //I should be able to add the border to the item here     
        }   
notifyDataSetChanged();
    } 

在您的 onBindViewHolder ...

 if(item.IsSelected()){
    //Change the View border here
    }else{
    //Default View Background
    }

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM