Как сохранить флажки в представлении Recycler с общими настройками - PullRequest
0 голосов
/ 07 мая 2018

У меня есть представление переработчика, внутри строки представления переработчика у меня есть текст с 5 флажками. Моя проблема заключается в том, что каждый раз, когда я ставлю один флажок, предпочтение Shared сохраняет все флажки в одном месте.

(РЕДАКТИРОВАТЬ) Пример: Я отмечаю флажок # 2 первой строки, и все остальные флажки # 2 других строк проверяются. После того как я вернусь к фрагменту.

Вот мой код адаптера

public class HabitosAdapter extends RecyclerView.Adapter<HabitosAdapter.MyViewHolder> {
    private List<Habitos> mHabitosList;
    private Fragment mFragment;
    private Context mContext;
    private CheckBox[] checkBoxes = new CheckBox[5];



    public class MyViewHolder extends RecyclerView.ViewHolder{
        TextView nombre;
        CardView habitosCardView;
        CheckBox CB1, CB2, CB3, CB4, CB5 ;

        public MyViewHolder(View itemView) {
            super(itemView);
            nombre = (TextView) itemView.findViewById(R.id.nombreHabito);
            habitosCardView = itemView.findViewById(R.id.habitos_card_view);
           CB1 = (CheckBox) itemView.findViewById(R.id.CBdia1);
            CB2 = (CheckBox) itemView.findViewById(R.id.CBdia2);
            CB3 = (CheckBox) itemView.findViewById(R.id.CBdia3);
            CB4 = (CheckBox) itemView.findViewById(R.id.CBdia4);
            CB5 = (CheckBox) itemView.findViewById(R.id.CBdia5);
        }
    }

    public HabitosAdapter(Context mContext, List<Habitos> habitosList){
        this.mContext = mContext;
        this.mHabitosList = habitosList;
    }

    public MyViewHolder onCreateViewHolder(ViewGroup parent, int viewType){
        View itemView = LayoutInflater.from(parent.getContext())
                .inflate(R.layout.habitos_list_row, parent, false);
        SharedPreferences preferences = mContext.getSharedPreferences("PROJECT_NAME", android.content.Context.MODE_PRIVATE);
        boolean valueBoolean = preferences.getBoolean("KEY", false);
        SharedPreferences.Editor editor = preferences.edit();
        editor.putBoolean("KEY", valueBoolean);
        editor.commit();


        return new MyViewHolder(itemView);

    }
      public void onBindViewHolder(@NonNull final MyViewHolder holder, final int position){

        holder.nombre.setText(mHabitosList.get(position).getNombre());

        holder.CB1.setChecked(getFromSP("CB1"));
       holder.CB1.setOnCheckedChangeListener(new CompoundButton.OnCheckedChangeListener() {
            @Override
            public void onCheckedChanged(CompoundButton compoundButton, boolean b) {
                saveInSp("CB1", b);
            }
        });
        holder.CB2.setChecked(getFromSP("CB2"));
        holder.CB2.setOnClickListener(new View.OnClickListener() {

            @Override
            public void onClick(View view) {
                if(holder.CB2.isChecked()){
                    saveInSp("CB2", true);
                } else{
                    saveInSp("CB2", false);
                }
            }
        });
        holder.CB3.setChecked(getFromSP("CB3"));
        holder.CB3.setOnCheckedChangeListener(new CompoundButton.OnCheckedChangeListener() {
            @Override
            public void onCheckedChanged(CompoundButton compoundButton, boolean b) {
                saveInSp("CB3", b);
            }
        });
        holder.CB4.setChecked(getFromSP("CB4"));
        holder.CB4.setOnCheckedChangeListener(new CompoundButton.OnCheckedChangeListener() {
            @Override
            public void onCheckedChanged(CompoundButton compoundButton, boolean b) {
                saveInSp("CB4", b);
            }
        });
        holder.CB5.setChecked(getFromSP("CB5"));
        holder.CB5.setOnCheckedChangeListener(new CompoundButton.OnCheckedChangeListener() {
            @Override
            public void onCheckedChanged(CompoundButton compoundButton, boolean b) {
                saveInSp("CB5",b);
            }
        });
     }
    public int getItemCount(){
        return mHabitosList.size();
    }
    private boolean getFromSP(String key) {
        SharedPreferences preferences = mContext.getSharedPreferences("PROJECT_NAME", android.content.Context.MODE_PRIVATE);
        return preferences.getBoolean(key, false);
    }

    private void saveInSp(String key,boolean value){
        SharedPreferences preferences = mContext.getSharedPreferences("PROJECT_NAME", android.content.Context.MODE_PRIVATE);
        SharedPreferences.Editor editor = preferences.edit();
        editor.putBoolean(key, value);
        editor.commit();
    }


}

Как сохранить только отмеченный флажок? Я знаю, что мне нужно получить только определенный CheckBox, который был проверен, и не устанавливать прослушиватель для всех CheckBoxes2, но я не знаю, как именно это сделать, я разрабатываю свое первое приложение, так что спасибо за ваше терпение.

1 Ответ

0 голосов
/ 07 мая 2018

ИЗМЕНЕНО до окончательного ответа

public class MainActivity extends AppCompatActivity {


CheckBox CB1, CB2, CB3, CB4, CB5 ;
@Override
protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.activity_main);
    EditText courseTitleEditText = null;
    CB1 = (CheckBox) findViewById(R.id.CBdia1);
    CB2 = (CheckBox) findViewById(R.id.CBdia2);
    CB3 = (CheckBox) findViewById(R.id.CBdia3);
    CB4 = (CheckBox) findViewById(R.id.CBdia4);
    CB5 = (CheckBox) findViewById(R.id.CBdia5);


    SharedPreferences preferences = getSharedPreferences("PROJECT_NAME", android.content.Context.MODE_PRIVATE);
    boolean valueBoolean = preferences.getBoolean("KEY", false);
    SharedPreferences.Editor editor = preferences.edit();
    editor.putBoolean("KEY", valueBoolean);
    editor.commit();


    CB1.setChecked(getFromSP("CB1"+position));
    CB1.setOnCheckedChangeListener(new CompoundButton.OnCheckedChangeListener() {
        @Override
        public void onCheckedChanged(CompoundButton compoundButton, boolean b) {
            saveInSp("CB1"+position, b);
        }
    });
    CB2.setChecked(getFromSP("CB2"+position));
    CB2.setOnClickListener(new View.OnClickListener() {

        @Override
        public void onClick(View view) {
            if(CB2.isChecked()){
                saveInSp("CB2"+position, true);
            } else{
                saveInSp("CB2"+position, false);
            }
        }
    });
    CB3.setChecked(getFromSP("CB3"+position));
    CB3.setOnCheckedChangeListener(new CompoundButton.OnCheckedChangeListener() {
        @Override
        public void onCheckedChanged(CompoundButton compoundButton, boolean b) {
            saveInSp("CB3"+position, b);
        }
    });
    CB4.setChecked(getFromSP("CB4"+position));
    CB4.setOnCheckedChangeListener(new CompoundButton.OnCheckedChangeListener() {
        @Override
        public void onCheckedChanged(CompoundButton compoundButton, boolean b) {
            saveInSp("CB4"+position, b);
        }
    });
    CB5.setChecked(getFromSP("CB5"+position));
    CB5.setOnCheckedChangeListener(new CompoundButton.OnCheckedChangeListener() {
        @Override
        public void onCheckedChanged(CompoundButton compoundButton, boolean b) {
            saveInSp("CB5"+position,b);
        }
    });

}

private boolean getFromSP(String key) {
    SharedPreferences preferences = getSharedPreferences("PROJECT_NAME", android.content.Context.MODE_PRIVATE);
    return preferences.getBoolean(key, false);
}

private void saveInSp(String key,boolean value){
    SharedPreferences preferences = getSharedPreferences("PROJECT_NAME", android.content.Context.MODE_PRIVATE);
    SharedPreferences.Editor editor = preferences.edit();
    editor.putBoolean(key, value);
    editor.commit();
}

}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...