2015-02-15 3 views
1

Есть ли какой-либо возможный способ добавления элементов в listview с помощью setAdapter, который содержит только определенные элементы? например, я хочу добавить в listview элементы, содержащие только дату «15 февраля 2015 года».Android добавляет элементы в Listview.setAdapter, который содержит только определенные элементы.

После кодов:

final ListAdapter adapter = new SimpleAdapter(CalendarActivity.this, eventsList, R.layout.calendar_event_list, new String[]{TAG_PID, 
        TAG_EVENTTITLE,TAG_EVENTSTART,TAG_EVENTEND}, 
        new int[]{R.id.pid, R.id.eventname, R.id.eventstart, R.id.eventend}); 
      ListView myList = (ListView) findViewById(android.R.id.list); 

      SimpleDateFormat formatdate = new SimpleDateFormat("MMM. dd, yyyy"); 
      String selecdate = formatdate.format(date); 

      if (eventDates.contains(selecdate)) { 
        myList.setAdapter(adapter); //these line I want only to add items in listview which contains the value of 'selectdate' 
      } 
      else { 
       myList.setAdapter(null); 

      } 

ответ

1

SimpleAdapter используется для статических данных. Поскольку вы хотите динамически фильтровать данные, вы должны реализовать пользовательский адаптер для этого. Однако дешевым решением будет фильтрация данных перед настройкой адаптера. Пример:

ListView myList = (ListView) findViewById(android.R.id.list); 
SimpleDateFormat formatdate = new SimpleDateFormat("MMM. dd, yyyy"); 
String selecdate = formatdate.format(date); 
// Filter selected events 
List<Map<String, Object>> filteredEventsList = new ArrayList<Map<String, Object>>(); 
for (Map<STring, Object> row : eventsList) { 
    if (row should be shown) { 
     filteredEventsList.add(row); 
    } 
} 

final ListAdapter adapter = new SimpleAdapter(CalendarActivity.this, filteredEventsList, R.layout.calendar_event_list, new String[]{TAG_PID, 
       TAG_EVENTTITLE,TAG_EVENTSTART,TAG_EVENTEND}, 
       new int[]{R.id.pid, R.id.eventname, R.id.eventstart, R.id.eventend}); 
myList.setAdapter(adapter); 
Смежные вопросы