我正在使用android recyclerview显示项目列表,能够通过MultipleSelect接口选择多个项目,我需要显示先前选中/检查的项目设置为在recyclerview的编辑模式中选中。
我无法在我的代码中获得此业务逻辑。任何人都可以帮助我,我是Android开发的新手。
我从服务器获取以前选择的项目,格式为arrayList:
InterestsList : Ex:["Antiques-Collecting","Arts-Crafts","Boating"]
此兴趣列表项目需要在Recyclerview中设置为已选中/已选中,并且用户可以再次修改需要选择更多项目或从所选项目中删除的项目并保存数据。
我怎么能为此编写简单的逻辑?
字符串ArrayList具有Recycler项目列表数据,InterestsList是已检查项目列表数据。
适配器类:
@Override
public void onBindViewHolder(@NonNull MyViewHolder holder, int position) {
holder.tvInterestName.setText(interests.get(position).getInterest().toString());
interestList = model.getInterests(); // PREVIOUSLY SELECTED ITEMS
//in some cases, it will prevent unwanted situations
holder.checkBox.setOnCheckedChangeListener(null);
//if true, your checkbox will be selected, else unselected
holder.checkBox.setChecked(interests.get(position).isSelected());
holder.cell.setOnClickListener(v ->
{
holder.checkBox.performClick();
});
if (interests.get(position).isSelected()) {
holder.checkBox.setChecked(true);
} else {
holder.checkBox.setChecked(false);
}
holder.checkBox.setOnCheckedChangeListener((buttonView, isChecked) ->
{
guestListener.OnMultipleGuestListener(position, isChecked);
});
}
选择我的活动类中使用的接口侦听器下面的多个项目:
@Override
public void OnMultipleGuestListener(int position, boolean isChecked) {
interestFinalList.get(position).setSelected(isChecked);
interestsAdapter.notifyDataSetChanged();
}
ScreenShot中以下格式所需的更改:
例如:[“Antiques-Collecting”,“Arts-Crafts”,“Boating”]当我来到这个屏幕时,项目需要设置为选中/选中。
在复选框选中取消选中时,在列表中维护一个布尔变量,然后相应地更改布尔变量的值,如true和false,然后通知列表。
and inside your onbind view holder check boolean variable true or false if true then show selected otherwise unselected.
像这样修改你的代码。希望它会对你有所帮助。
@Override
public void onBindViewHolder(@NonNull MyViewHolder holder, int position) {
holder.tvInterestName.setText(interests.get(position).getInterest().toString());
//in some cases, it will prevent unwanted situations
holder.checkBox.setOnCheckedChangeListener(null);
//if true, your checkbox will be selected, else unselected
holder.checkBox.setChecked(interests.get(position).isSelected());
holder.cell.setOnClickListener(v ->
{
holder.checkBox.performClick();
});
holder.checkBox.setOnCheckedChangeListener((buttonView, isChecked) ->
{
interests.get(position).setSelected(isChecked);
guestListener.OnMultipleGuestListener(position, isChecked);
});
}
从模型中获取单个选定结果,并检查其是否等于持有者文本名称。如果两者都是等于,则将复选框设为true。例如:
@Override
public void onBindViewHolder(@NonNull MyViewHolder holder, int position) {
holder.tvInterestName.setText(interests.get(position).getInterest().toString());
//in some cases, it will prevent unwanted situations
holder.checkBox.setOnCheckedChangeListener(null);
//if true, your checkbox will be selected, else unselected
for(int i=0;i<model.getInterests().size();i++)
if(model.getInterests().get(i).equals(interests.get(position).getInterest())){
holder.checkBox.setChecked(true);
}
}