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:

https://gist.github.com/jezinka/a9779751c47d905e846f90968d59a350

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

https://gist.github.com/jezinka/1707925c1085cdea4727ff3843520aaa

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 🙂

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

Dodaj komentarz

Twój adres e-mail nie zostanie opublikowany. Wymagane pola są oznaczone *

Witryna wykorzystuje Akismet, aby ograniczyć spam. Dowiedz się więcej jak przetwarzane są dane komentarzy.