Close

obsłużmy listę – Filterable ArrayAdapter – #0F

Lista posiłków – taki mały, wielki komponent:

wp-1491113369523.png

Pozwala dodać element do tabelki w bazie danych, wyświetla to co w tabelce (o, bug w sortowaniu 😛 ), pozwala edytować i usunąć to co zapisane. To czego  nie widać akurat na tym ekranie to możliwość filtrowania [w sumie, może tutaj też by się przydało]. Pojawia się to w innym miejscu aplikacji, bo tego samego adaptera używam też w innym miejscu zgodnie z zasadą DRY

wp-1491112687494.png

Cały kod adaptera do znalezienia na githubie (dokładnie tu). Ogólnie zaczął być tworzony jako klasa rozszerzająca BaseAdapter do czasu kiedy okazało się, że przydałoby się jednak zrobić to tak, żeby można go było użyć ponownie przy ekranie z wyborem posiłków. Największym wyzwaniem okazało się, sprawienie żeby działał raz na widoku, który obsługuje wybranie jednego elementu z listy, a za drugim razem dla wielokrotnego wyboru. Rozwiązaniem tego problemu okazał się być ArrayAdapter, który pozwolił mi zdefiniować z jakich dokładnie obiektów składa się moja lista i jakiego komponentu użyć do jej wyświetlenia. Adapter implementuje też interface gFilterable, znaczy się, implementuję metodę getFilter, która filtruje posiłki na podstawie tego co użytkownik wpisał w pole do wyszukiwania. Brzmi to poważniej niż sam kod 😀

Tworzenie adaptera, w jednym (MealListActivity.java)

 adapter = new MealListAdapter(this, android.R.layout.simple_list_item_multiple_choice, mealContract.getAllMealsArray(dbHelper)); 

i w drugim przypadku (MealPickerFragment.java)

final MealListAdapter adapter = new MealListAdapter(getContext(), android.R.layout.simple_list_item_1, meals);

Po stworzeniu podłączenie

 mealListView.setAdapter(adapter); 

ListView nie byłby kompletny bez zaimplementowania kilku akcji – onItemClick żeby zaznaczyć do usunięcia i onItemLongClick do edycji dla ekranu do zarządzaniem posiłkami:

Wybieranie i wykonywanie filtrowania na liście/adapterze w miejscu gdzie tworzymy obiad:

Przede mną zapewne jeszcze jeden podobny adapter – ale tym razem dla obiektu Dinner. Mam nadzieję, że będzie z górki, skoro pierwsze koty za płoty 😉

Zamierzam jeszcze w przyszłości wrócić do implementacji tej listy, bo w planach mam co najmniej zaimplementowanie usuwania na zasadzie “swipe for dismiss” i dodanie później kolejnych pól do tej listy, żeby ViewHolder był bardziej rozbudowany niż jedno pole tekstowe 🙂

1 thought on “obsłużmy listę – Filterable ArrayAdapter – #0F

Leave a Reply

Your email address will not be published. Required fields are marked *

This site uses Akismet to reduce spam. Learn how your comment data is processed.

%d bloggers like this: