How to set check box true if once checked in RecyclerView like flipkart price range

♀尐吖头ヾ 提交于 2020-01-05 07:12:54

问题


Hello can any one help me how to set checked true checkbox in RecyclerView if user checked it once and apply filter same as flipkart price filter

here is my code :-

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

回答1:


try it instead of set on click:

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

this code work for multiple checkboxes in a ListView each checkbox have a sharedpreferences boolean value and all default is false.

Your Updated code:

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

before test this code erase your app from device and install it again Don't forget to change location of prefs initializing because it will happen for every cell and its not true.



来源:https://stackoverflow.com/questions/59510385/how-to-set-check-box-true-if-once-checked-in-recyclerview-like-flipkart-price-ra

易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!