NotifyDataSetChanged не обновляет arrayList при повторном вызове - PullRequest
0 голосов
/ 31 мая 2019

Почему мой вопрос получает отрицательные оценки?я не понимаю.Пожалуйста, помогите.

У меня есть 5 списков, отображаемых в адаптере один за другим.Я должен удалить 2 строки, когда пользователь нажимает на кнопку в деятельности.(Удаляйте две опции из списка при каждом нажатии кнопки) Каждый список получает нажатие кнопки только один раз.При нажатии кнопки метод NotifyDataSetChanged не обновляет список в адаптере.

Пока это происходит для списка 1, когда появляется второй список, кнопка нажата, 2 элемента из массива удалены, но notifyDataSetChangedне обновляет список в адаптере.

В Activity: row_number = count, который я получаю от реализации интерфейса, указанного в адаптере

  private void removeTwoFunctionality() {

    button_removeTwo.setOnClickListener(new View.OnClickListener() {
        @Override
        public void onClick(View v) {
            if (row_number == 1) {
                TextArray1.remove(0);
                TextArray1.remove(1);
                adapter.notifyDataSetChanged();
                adapter.RemoveTwoButtonClicked();
            }
            if (row_number == 2) {
                TextArray2.remove(0);
                TextArray2.remove(1);
                adapter.notifyDataSetChanged();
                adapter.RemoveTwoButtonClicked();
            }
            if (row_number == 3) {
                TextArray3.remove(0);
                TextArray3.remove(1);
                adapter.notifyDataSetChanged();
                adapter.RemoveTwoButtonClicked();
            }
            if (row_number == 4) {
                TextArray4.remove(0);
                TextArray4.remove(1);
                adapter.notifyDataSetChanged();
                adapter.RemoveTwoButtonClicked();
            }
            if (row_number == 5) {
                TextArray5.remove(0);
                TextArray5.remove(1);
                adapter.notifyDataSetChanged();
                adapter.RemoveTwoButtonClicked();
            }
        }
    });
}

В ADAPTER onBindViewHolder: Все условия выполняются, когдаследующий список прибывает

// list 1
    if (!TextArray1.isEmpty()) {
        count = 1;
        holder.name.setText(TextArray1.get(position).getTitle());
    }
// list 2
    if (TextArray1.isEmpty() && TextArray2.size() > 0) {
        count = 2;
        holder.name.setText(TextArray2.get(position).getTitle());
    }
// list 3
    if (TextArray2.isEmpty() && TextArray3.size() > 0) {
        count = 3;
        holder.name.setText(TextArray3.get(position).getTitle());
    }
// list 4
    if (TextArray3.isEmpty() && TextArray4.size() > 0) {
        count = 4;
        holder.name.setText(TextArray4.get(position).getTitle());
    }
// list 5
    if (TextArray4.isEmpty() && TextArray5.size() > 0) {
        count = 5;
        holder.name.setText(TextArray5.get(position).getTitle());
    }
// interface to know the count in the activity
    if (mOnAnswerListener != null) {
        mOnAnswerListener.getRowNumber(count);
    }

Ответы [ 2 ]

0 голосов
/ 31 мая 2019

Вы должны поставить notifyDataSetChanged после удаления элементов:

  TextArray5.remove(0);
  TextArray5.remove(1);
  adapter.RemoveTwoButtonClicked();
  adapter.notifyDataSetChanged();
0 голосов
/ 31 мая 2019

Попробуйте вот так

                TextArray5.remove(0);
                TextArray5.remove(1);
                adapter.RemoveTwoButtonClicked();
                adapter.notifyDataSetChanged();
...