Мои listview
получают данные из webservice
, а возвращаемые данные иногда содержат некоторые id
(но разные данные).
Для тех данных, которые имеют одинаковый идентификатор, я хочу отображать их только listview
один раз.
Что я пробовал в getView
:
if(position > 0)
prevId = getItem(position-1).getId();
if(getItem(position).getId() == prevId)
//skip current row
Проблема в том, как пропустить текущую строку? (потому что id
такой же, как предыдущий)
2 ответа
Одним из решений может быть добавление предыдущих строк в ArrayList , поэтому при создании новой строки в getView() вы можете проверить, что если содержимое текущей строки имеет идентификатор, который находится внутри вашего arrayList, тогда ничего не делайте!
Лучше всего отфильтровать данные перед вводом их в ListView. Добавьте структуру данных и классы, которые вы используете, чтобы получить подробную справку.
Я думаю, вам нужно сделать что-то подобное (T означает тип с функцией getId()):
List<T> removeDuplicateFromList(List<T> data){
HashMap<String,T> filterdData = new HashMap<String,T>();
for (T t: data){
if (!filterdData.containKey(t.getId()){
filterdData.put(t.getId(),t);
}else{
//Update the data at the map if needed
}
}
return filterdData.values();
}
Похожие вопросы
Новые вопросы
android
Android — это мобильная операционная система Google, используемая для программирования или разработки цифровых устройств (смартфонов, планшетов, автомобилей, телевизоров, одежды, очков, IoT). Для тем, связанных с Android, используйте теги, специфичные для Android, такие как android-intent, android-activity, android-adapter и т. д. Для вопросов, отличных от разработки или программирования, но связанных с Android framework, используйте эту ссылку: https://android .stackexchange.com.