Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/347.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 如何实现多选回收视图?_Java_Android_Android Recyclerview - Fatal编程技术网

Java 如何实现多选回收视图?

Java 如何实现多选回收视图?,java,android,android-recyclerview,Java,Android,Android Recyclerview,我正在尝试实现一个支持项中多选择的RecyclerView,我看到了关于这个主题的其他问题,但主要区别在于我需要能够在适配器之外进行选择。 例如,假设我有一个名为SelectionDialog的对话框,该对话框显示一些选择选项,例如“全选”,因此,如果我单击它,我应该能够选择我的recyclerview的所有项目,并且该项目应该更改一些内容,让用户知道选择了哪些项目,在我的情况下,我决定(使用MaterialCardView)为项目添加一点颜色边框,以区分其是否已选定。 我可以使用适配器中的公共

我正在尝试实现一个支持项中多选择的RecyclerView,我看到了关于这个主题的其他问题,但主要区别在于我需要能够在适配器之外进行选择。
例如,假设我有一个名为SelectionDialog的对话框,该对话框显示一些选择选项,例如“全选”,因此,如果我单击它,我应该能够选择我的recyclerview的所有项目,并且该项目应该更改一些内容,让用户知道选择了哪些项目,在我的情况下,我决定(使用MaterialCardView)为项目添加一点颜色边框,以区分其是否已选定。
我可以使用适配器中的公共方法选择所有任务(将其isSelected boolean属性更改为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     
        }   
    }   
//选择对话框
AllB.setOnClickListener(新视图.OnClickListener(){
@凌驾
公共void onClick(视图){
listadapter.SelectAll();
触摸=真实;
解雇();
}
});
//列表适配器
public void SelectAll()
{    
对于(int i=0;i
调用
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
    }