У меня есть пользовательский ArrayAdapter
, и я переопределяю методы добавления и удаления.
Когда я вызываю метод remove, передаваемый объект немного отличается от соответствующего объекта в ArrayAdapter
, который должен быть удален, некоторые из полей не совпадают.
Я не забочусь об этих различиях и все еще хочу, что я считаю соответствующим объектом, который нужно удалить.
Как это сделать?
Я пробовал написать метод equals()
в классе моего объекта, где я только сравнивал интересующие поля, но функция никогда не вызывалась. Я также попытался найти индекс объекта, который нужно удалить, итерации через все члены ArrayAdapter
внутри метода удаления, а затем вызвав remove(index)
на ArrayList
, это сработало, но когда обновлялся listView
, метод getView()
настраиваемого ArrayAdapter было вызвано одним дополнительным временем, не считая удаляемого объекта.
Вероятно, это потому, что super.remove(index)
не был вызван, так как ожидается, что super.remove(object)
будет вызван.Переопределение пользовательского ArrayAdapter Удалить Iterator
Спасибо за любые предложения.
при смене адаптера, вы должны вызвать adapter.notifyDataSetChanged() –
я называю notifyDataSetChanged() и список был обновлен должным образом, но когда. Я начал прокручивать его, я получил исключение указателя ull в методе getView(), который пытается получить доступ к элементу N, хотя теперь были только записи N-1. –
Опубликуйте свой метод getView(). –