У меня проблема с ArrayList. Я использую ArrayList, как это:
private ArrayList<Playlist> mPlaylists;
где Playlist - это класс, унаследованный от другого ArrayList.
Я делаю следующее:
p = new Playlist(...some parameters...);
mPlaylists.add(p);
Позже, когда я использую 'p', чтобы получить индекс в списке:
int index = mPlaylists.indexOf(p);
возвращается индекс '1', хотя проверка списка ясно показывает, что это индекс '4'.
Кто-нибудь знает, почему это не удается?
Спасибо.
B.R.
Morten
Edit:
Та же проблема без indexOf (), используя equals ():
private int GetIndex(Playlist playlist) {
for (int i = 0; i < mPlaylists.size(); i++) {
if (mPlaylists.get(i).equals(playlist)) {
return i;
}
}
return -1;
}
Новое редактирование:
Это работает!:
private int getIndex(Playlist playlist) {
for (int i = 0; i < mPlaylists.size(); i++) {
if (mPlaylists.get(i) == playlist) {
return i;
}
}
return -1;
}
Решение:
Как и предполагалось, я изменил класс Playlist, чтобы он не наследовал от ArrayList, а скорее оставил экземпляр в частном порядке. Оказалось, что мне нужно было реализовать только 4 метода ArrayList.
Это делает трюк; Теперь indexOf () возвращает правильный объект!
Спасибо всем участникам!