2013-12-14 2 views
0

У меня есть пользовательский ArrayAdapter, и я переопределяю методы добавления и удаления.
Когда я вызываю метод remove, передаваемый объект немного отличается от соответствующего объекта в ArrayAdapter, который должен быть удален, некоторые из полей не совпадают.
Я не забочусь об этих различиях и все еще хочу, что я считаю соответствующим объектом, который нужно удалить.
Как это сделать?

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

Спасибо за любые предложения.

+0

при смене адаптера, вы должны вызвать adapter.notifyDataSetChanged() –

+0

я называю notifyDataSetChanged() и список был обновлен должным образом, но когда. Я начал прокручивать его, я получил исключение указателя ull в методе getView(), который пытается получить доступ к элементу N, хотя теперь были только записи N-1. –

+0

Опубликуйте свой метод getView(). –

ответ

1

мне пришлось переопределить объекта, равно метод, но при переопределении этого метода, он должен быть переопределены следующим образом:

@Override 
public boolean equals (Object obj) { 
    CustomClass foo = (CustomClass)obj; 

    // now 'this' can be compared to foo, as needed 
} 

я изначально написал равенства метод следующим образом (и не получил называется - я предполагаю, что я перегружен его, вместо того, перекрывая его

public boolean equals (CustomClass obj) { 
    // comparing 'this' to obj does not help, since the entire equals method 
    // is not called at all 
} 
Смежные вопросы