android - 如果像 flipkart 价格范围一样在 RecyclerView 中检查过,如何将复选框设置为 true

标签 android android-recyclerview android-checkbox

你好,如果用户选中一次并应用与 flipkart 价格过滤器相同的过滤器,任何人都可以帮助我如何在 RecyclerView 中设置选中的 true 复选框

这是我的代码:-

    final ResultGetCategory datum = moviesList.get(position);
    holder.label_category_name.setText(datum.getName());
    //checkbox click event handling

    holder.checkbox.setChecked(datum.isSelected());
    holder.checkbox.setTag(moviesList.get(position));

    SharedPreferences prefsCheckBox = getContext().getSharedPreferences(String.valueOf(holder.checkbox.getTag()), Context.MODE_PRIVATE);
    final SharedPreferences.Editor editorCheckbox = prefsCheckBox.edit();

    holder.checkbox.setTag(moviesList.get(position));
    holder.checkbox.setChecked(
            prefsCheckBox.getBoolean(String.valueOf(holder.checkbox.getTag()), false));
    holder.checkbox.setOnCheckedChangeListener(new
                                                       CompoundButton.OnCheckedChangeListener() {
                                                           @Override
                                                           public void onCheckedChanged(CompoundButton buttonView,
                                                                                        boolean isChecked) {
                                                               //add your code here when set checked changed


                                                               editorCheckbox.putBoolean(String.valueOf(holder.checkbox.getTag()),isChecked);
                                                               editorCheckbox.apply();
                                                           }
                                                       });

最佳答案

尝试它而不是在点击时设置:

    holder.checkbox.setTag(moviesList.get(position));
    holder.checkBox.setChecked(
           prefs.getBoolean(
              String.valueOf(holder.checkbox.getTag(),false));
    holder.checkBox.setOnCheckedChangeListener(new 
         CompoundButton.OnCheckedChangeListener() {
        @Override
        public void onCheckedChanged(CompoundButton buttonView, 
                     boolean isChecked) {
            //add your code here when set checked changed
            editor.putBoolean(
                String.valueOf(holder.checkbox.getTag()),isChecked);
            editor.apply();
        }
    });

此代码适用于 ListView 中的多个复选框 每个复选框都有一个 sharedpreferences bool 值,所有默认值为 false。

您的更新代码:

    final ResultGetCategory datum = moviesList.get(position);
    holder.label_category_name.setText(datum.getName());
    //checkbox click event handling

    holder.checkbox.setChecked(datum.isSelected());
    holder.checkbox.setTag(moviesList.get(position));
/*
  //move commented lines to viewholder class or in constructor of 
      adapter
  //exactly these codes and dont change them
    SharedPreferences prefsCheckBox = 
       getContext().getSharedPreferences("checkbox", 
           Context.MODE_PRIVATE);
final SharedPreferences.Editor editorCheckbox = prefsCheckBox.edit();
*/
holder.checkbox.setTag(moviesList.get(position));
holder.checkbox.setChecked(

prefsCheckBox.getBoolean(
        String.valueOf(holder.checkbox.getTag()), false));
holder.checkbox.setOnCheckedChangeListener(new                                                    
          CompoundButton.OnCheckedChangeListener() {
       @Override
      public void onCheckedChanged(CompoundButton buttonView,                                                                                   
                                     boolean isChecked) {
  //add your code here when set checked changed



   editorCheckbox.putBoolean(
      String.valueOf(holder.checkbox.getTag()),isChecked);

        editorCheckbox.apply();
        }
 });

在测试此代码之前,请从设备中删除您的应用并重新安装 不要忘记更改 prefs 初始化的位置,因为它会发生在每个单元格上,但事实并非如此。

关于android - 如果像 flipkart 价格范围一样在 RecyclerView 中检查过,如何将复选框设置为 true,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/59510385/

相关文章:

java - 如何在应用程序或 Activity 加载之前显示进度对话框?

javascript - Android Chrome 中的 Web Speech API 问题

android - 从 Firebase 数据库中回收 ListView 中的 View 的好方法是什么

android - 图像在回收站 View 中重复

android - 从具有共享首选项的列表中保存复选框状态

java - Android 振动已弃用。如何在 Android>= API 26 中使用 VibrationEffect?

android - 在 Query 上使用 keepSynced() 而不是在 DatabaseRef 上使用有什么区别吗?

android - NestedScrollview 替代方案中的 RecyclerView

Android Kotlin 如何在多选 ListView 中选中复选框

android - 通过选中多个 CheckBox 从 CheckBox 图像访问 ImageView 的 scr