Я уже прошел много подобных вопросов, но все же я не получаю ответа.notifyDataSetChanged() не работает для пользовательского адаптера
Я использую пользовательский адаптер, имеющий ArrayList для ListView, когда есть какие-то изменения на панель поиска ArrayList модифицируются, и я хочу показать это меняет на ListView, я Доиг это следующие два способов
lv = (ListView) findViewById(R.id.lv_showcontactlist);
customAdapter = new ContactListViewAdapter(this);
customAdapter.setList(contactList);
lv.setAdapter(customAdapter);
contactList_temp = new ArrayList<ContactBean>(contactList);
попытку 1)
public void onProgressChanged(SeekBar seekBar, int progress,
boolean fromUser) {
for (ContactBean object : contactList_temp) {
int sal = Integer.parseInt(object.getSalary());
if (sal > progress) {
contactList.remove(object);
}
}
customAdapter.notifyDataSetChanged();
contactList.clear();
contactList.addAll(contactList_temp);
}
попытка 2)
public void onProgressChanged(SeekBar seekBar, int progress,
boolean fromUser) {
contactList.clear();
for (ContactBean object : contactList_temp) {
int sal = Integer.parseInt(object.getSalary());
if (sal < progress) {
contactList.add(object);
}
}
customAdapter.notifyDataSetChanged();
contactList.addAll(contactList_temp);
}
Setlist метод в моем классе адаптера:
public void setList(ArrayList<ContactBean> newList) {
this.m_contactlist = newList;
}
Моя проблема заключается в оба метода логически делают ту же задачу, но мой 1 метод не ListView остается тем же, но второй метод работает должным образом ListView отражает изменения, как и ожидалось. Поэтому я хочу знать, в чем причина этого.
no. Я хочу показать измененное содержимое контакт-листа в текстовом виде и для дальнейшей работы. Я переназначаю контактный список с его резервной копией contactlist_temp, я не хочу показывать содержимое contactlist_temp. – DCoder
Я не думаю, что вы можете изменить список после notifyDataSetChanged, который вы использовали для списка. Я уверен, что если вы прокрутите список, это приведет к ошибке. Кстати, ваш оба кода не являются логически одинаковыми, поэтому они ведут себя по-другому. –