У меня есть ArrayList, который содержит элементы (поля - это имя и тип). Есть только два разных возможных типа («edu» и «ent»), которые я хочу, чтобы каждый отображался в своем собственном списке.Фильтр ArrayList и удаление ненужных элементов
Моя идея состояла в том, чтобы создать два новых ArrayLists с теми же данными, а затем петлю через каждый и фильтровать нежелательные элементы, как это:
ListView listView_ent = (ListView) findViewById(R.id.popular_apps_list_ent);
ArrayList<DataHolder> data_ent = data;
for (int i = 0; i < data_ent.size(); i++) {
if(data_ent.get(i).getType().equals("edu")){
data_ent.remove(i);
}
}
listView_ent.setAdapter(new AppsAdapter(this, data_ent));
ListView listView_edu = (ListView) findViewById(R.id.popular_apps_list_edu);
ArrayList<DataHolder> data_edu = data;
for (int i = 0; i < data_edu.size(); i++) {
if(data_edu.get(i).getType().equals("ent")){
data_edu.remove(i);
}
}
listView_edu.setAdapter(new AppsAdapter(this, data_edu));
Есть 10 элементов в ArrayList, 5 каждого типа.
Проблема в том, что в конце обоих списков есть 4 одинаковых элемента, отображаемых со смешанными типами.
Любая идея, что я сделал неправильно?
Вы исследовали [http://stackoverflow.com/questions/2250770/how-to-refresh-android-listview][1] ?? [1]: http://stackoverflow.com/questions/2250770/how-to-refresh-android-listview – Elorry
Я не пытаюсь обновить ListView. Если я проверю, что происходит в циклах, я вижу, что по какой-то неизвестной причине ArrayList не фильтруется правильно. – Soriyyx