当前位置: 首页 > 知识库问答 >
问题:

如何在Android recycler view { Total items }中将所选项目{以前选择的数组项目列表}设置为选中

储俊英
2023-03-14

我正在使用android recyclerview显示项目列表,可以通过MultipleSelect界面选择多个项目,我需要显示之前选择/选中的项目在RecyclerViewer的编辑模式下设置为选中。

我无法在我的代码中获得这个业务逻辑。有人能帮我吗,我是android开发的新手。

我从服务器以arrayList格式获取previoulsy选定的项目:

InterestsList : Ex:["Antiques-Collecting","Arts-Crafts","Boating"]

该兴趣列表项目需要在Recyclerview中设置为选中/选定,用户可以再次修改项目,需要选择更多或从以前选择的项目中删除,并保存数据。

我该如何为此编写简单的逻辑呢?

strings ArrayList具有回收器项目列表数据,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();
    }

屏幕拍摄所需的更改,格式如下:

示例:[“古董收藏”、“工艺品”、“划船”]当我进入此屏幕时,需要将项目设置为选中/选中。

共有3个答案

卢开济
2023-03-14

从您的模型中获取一个选定的结果并选中是否等于持有者文本名称。如果两者都相等,则复选框为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);

    }
}
满勇军
2023-03-14

像这样修改代码。希望它能帮助你。

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

}
艾谦
2023-03-14

在您的列表中维护一个布尔变量,当选中复选框时取消选中,然后相应地更改布尔变量的值,如true和false,然后通知您的列表。

and inside your onbind view holder check boolean variable true or false if true then show selected otherwise unselected.
 类似资料:
  • 我有一个Windows Phone应用程序,其中一个ListPicker绑定到一个ObservableCollection和一个选定的项目: 在ViewModel中: 当我试图从按钮处理程序的列表中删除所选项目时,我得到一个InvalidOperationException(SelectedItem必须始终设置为有效值): 我希望将SseltedCon条件设置为null(这实际上是列表中的第一个项

  • 我正在使用新的android。支持设计小装置。来自支持库的BottomNavigationView。如何从代码中设置当前选择?我意识到,在旋转屏幕后,选择被更改回第一项。当然,如果有人能告诉我如何在“暂停”功能中“保存”底部导航视图的当前状态,以及如何在“恢复”功能中恢复它,这也会有所帮助。 谢谢

  • 问题内容: 是否可以使用以下“类型”代码在下拉框中设置所选项目? 该数据库有一个月..我想在编辑页面上允许他们选择这个月..但是要用当前设置预先填写吗? 问题答案: 您需要设置正确选项标签的selected属性: 您的PHP如下所示: 我通常发现创建值数组并循环遍历以创建下拉列表比较整洁。

  • 我有选择权。如何设置为var选择自动选择? 例如,我手动选择选项1,它自动 <代码> 编辑我发现了。

  • 我正在使用接缝2.2.2。JBoss AS 5上的最终版本。我正在开发一个多页向导。在我的第一页上,用户将能够在文本区域上输入由新行分隔的多个业务名称。 提交页面后,系统解析输入值并将其拆分为字符串列表 然后要求用户从有效企业名称列表中选择进行注册 selectedbusinessName为String类型,而businessNameChoices为List类型 在提交页面时,作为企业名称提交的内

  • 问题内容: 我想设置一个先前选择的要在页面加载时显示的选项。我用以下代码尝试了它: 与 但这是行不通的。有任何想法吗? 问题答案: 这绝对应该工作。确保已将代码放入: