Я написал собственный ContactListAdapter, который выходит из ArrayAdapter.Предположим, что в списке всего три элемента.Я печатаю позицию и хеш-код объекта View, полученный при каждом вызове getView ().Я заметил, что объект просмотра не возвращается правильно.Я что-то здесь не так делаю?
private class ContactListAdapter extends ArrayAdapter<ContactItem> {
... ...
@Override
public View getView(int aPosition, View aConvertView, ViewGroup aParent) {
Log.d(TAG, "Inside ContactListAdapter.getView()");
if(aConvertView==null) {
Log.d(TAG, "ConvertView is null");
// Inflate view...
}
Log.d(TAG, "Pos: " + aPosition + " View: " + aConvertView.hashCode());
return aConvertView;
}
Вот журналы для первоначального создания представления:
D/ContactsActivity( 759): Inside ContactListAdapter.getView()
D/ContactsActivity( 759): ConvertView is null
D/ContactsActivity( 759): Pos: 0 View: 1156974184
D/ContactsActivity( 759): Inside ContactListAdapter.getView()
D/ContactsActivity( 759): ConvertView is null
D/ContactsActivity( 759): Pos: 1 View: 1157007416
D/ContactsActivity( 759): Inside ContactListAdapter.getView()
D/ContactsActivity( 759): ConvertView is null
D/ContactsActivity( 759): Pos: 2 View: 1157027832
И журналы, когда я нажимаю на третий элемент в списке (Обратите внимание, как хэш-кодпервого и последнего элемента обменивается).Мой метод onClick только позволяет нескольким объектам в соответствующей записи списка:
D/ContactsActivity( 759): Inside ContactListAdapter.getView()
D/ContactsActivity( 759): Pos: 0 View: 1157027832
D/ContactsActivity( 759): Inside ContactListAdapter.getView()
D/ContactsActivity( 759): Pos: 1 View: 1157007416
D/ContactsActivity( 759): Inside ContactListAdapter.getView()
D/ContactsActivity( 759): Pos: 2 View: 1156974184
И регистрирует, когда я нажимаю на второй элемент:
D/ContactsActivity( 759): Inside ContactListAdapter.getView()
D/ContactsActivity( 759): Pos: 0 View: 1156974184
D/ContactsActivity( 759): Inside ContactListAdapter.getView()
D/ContactsActivity( 759): Pos: 1 View: 1157007416
D/ContactsActivity( 759): Inside ContactListAdapter.getView()
D/ContactsActivity( 759): Pos: 2 View: 1157027832
Это наблюдается неоднократно, только хеш-код первогои последняя запись обменивается каждый раз.Что может быть причиной этого?