Как включить другие флажки в представлении утилизатора, если установлен предыдущий флажок (другие флажки сначала отключены)? - PullRequest
0 голосов
/ 20 апреля 2020

Что я хочу сделать, это если Апрель и Может иметь причитающуюся сумму, тогда пользователь не может выбрать Может , если Апрель является не выбран . Сначала пользователь должен выбрать Апрель , затем флажок Май включит включенный . Если выбран Май , то Июнь получит Включено .

Я не могу получить положение флажков, чтобы я мог сделать то же самое.

enter image description here

@Override
  public void onBindViewHolder(@NonNull FeeHolder holder, int position) {
      holder.textView_fee.setText(Integer.toString(list.get(position).getFeeAmount()));
      holder.textView_due.setText(Integer.toString(list.get(position).getDueAmount()));
      holder.checkBox.setText(list.get(position).getInstallmentName());

      holder.checkBox.setTag(Integer.toString(position));
      arrayList.add(holder.checkBox);
      /*if (holder.checkBox.isChecked()) {
          arrayList.add(holder.checkBox);
      }*/
      holder.checkBox.setOnCheckedChangeListener(new CompoundButton.OnCheckedChangeListener() {
          @Override
          public void onCheckedChanged(CompoundButton buttonView, boolean isChecked) {

          }
      });

1 Ответ

0 голосов
/ 20 апреля 2020

Добавьте свойство selected (с геттерами и сеттерами) к массиву list, и вот фрагмент кода для игры.

if (position > 0) {
  YourObject obj = list.get(position - 1);
  if(obj.dueAmount() > 0) {
    if(obj.isSelected()) {
      holder.checkBox.setEnabled(true)
    } else {
      holder.checkBox.setEnabled(false)
    }
  } else {
    holder.checkBox.setEnabled(true)
  }
}

Затем на вашем setOnCheckedChangeListener, соответственно обновите свойство selected вашего объекта.

PS: применяется цепной эффект, если предыдущие элементы имеют dueAmount > 0

...