Ostatnio w ramach nauki napisałem sobie kolejne narzędzie ułatwiające życie nurkom. Chodziło o stworzenie listy sprzętu z możliwością jej edycji, zmiany etc. Nurek na nurkowanie zabiera sporo sprzętu i często zdarza się o czymś zapomnieć.
Tworzenie checklisty w android opisane jest w wielu tutorial’ach. Problem polega na tym, że do obsługi prawdziwej listy checkbox’ów potrzebujemy stworzyć Custom Adapter, który ogarnie nam kwestie poprawnego wyświetlania listy, zaznaczeń etc. Na stackoverflow jest mnóstwo wpisów o tym dlaczego np. jak zaznaczam pierwszą pozycję na liście to zaznacza się także 9 itd. Właśnie takim problemom zapobiega Custom adapter, który zarządza całą logiką takiej listy. Ponieważ gdy lista jest przewijana tworzony jest nowy widok dla każdego wiersza i poprzedni “stan” widoku jest usuwany.
Bardzo fajny tutorial jest na stronie Checkbox Lista how-to
Używając takiego Custom adaptera trzeba także pamiętać, żeby logikę różnych działań umieszczać w adapterze. Na przykład chcąc sprawdzić czy wszystkie checkbox’y na liście zostały zaznaczone, bazując na kodzie z powyższego tutoriala, zmodyfikowałem go tak aby wyświetlał komunikat.
if (itemChecked[position]) holder.ck1.setChecked(true); else holder.ck1.setChecked(false); holder.ck1.setOnClickListener(new OnClickListener() { @Override public void onClick(View v) { // TODO Auto-generated method stub if (holder.ck1.isChecked()) checkAllMaks(position); else itemChecked[position] = false; } }); return convertView; } public static boolean allTrue(boolean[] values) { for (boolean itemChecked : values) { if (!itemChecked) return false; } return true; } private void checkAllMaks(int position) { itemChecked[position] = true; if (allTrue(itemChecked) == true) { AlertDialog.Builder alert = new AlertDialog.Builder(context); alert.setTitle("Wszystkie checkbox'y zostały zaznaczone :-)"); alert.setPositiveButton("Ok", new DialogInterface.OnClickListener() { @Override public void onClick(DialogInterface dialog, int which) { } }); alert.show(); } }
Prosta aplikacja powstała jak ktoś chce zobaczyć jak działa Nurkowa Lista Sprzętu Google play