2014-10-03 3 views
0

У меня возникают проблемы, выполняя некоторые простые задачи с помощью моего адаптера. У меня есть класс, реализующий BaseAdapter, связанный с ListView. После того, как я создал этот адаптер и показал его пользователю, если какое-то событие возникнет, я удалю все элементы внутри адаптера и добавлю новые.Удалите все элементы в пользовательском BaseAdapter и добавьте новые

У меня есть реализовать этот метод в моем BaseAdapter:

public void clearAndBuild(ArrayList<PictureObject> new_pics, String some_text) { 
    pics.clear(); 
    pics.addAll(new_pics); 
    this.hashtag = hashtag; 

    //do something else 
} 

(где фото является ArrayList, содержащий элементы, чтобы поместить внутри ListView). В моей деятельности можно обновить все, что я звоню:

adapter.clearAndBuild(pics, tag); 
adapter.notifyDataSetChanged(); 

но это не работает. После того, как я вызываю этот метод, старые элементы внутри listView удаляются, но новые не отображаются (я получаю пустой список). Что случилось?

+0

В вашем clearAndBuild вызова ArrayList вы передаете тот же один вы очистки? Не могу сказать из контекста кода. Если это так, вы можете очистить новый ArrayList, а затем попытаться присвоить его самому себе. – NightwareSystems

+0

Пожалуйста, разместите свой адаптер и получите экземпляр! – mmlooloo

ответ

0

Единственная причина может заключаться в том, что вы повторно используете те же ссылки для pics и new_pics. Сделайте глубокую копию new_pics перед вызовом ясно() на pics

0

вы можете сделать это:

public void clearAndBuild(ArrayList<PictureObject> new_pics, String some_text) { 
    pics. = new ArrayList<PictureObject>(new_pics); 
    this.hashtag = hashtag; 

    //do something else 
} 
Смежные вопросы