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