Lista checkbox w Android

Nurkowa lista sprzętuOstatnio 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

Facebooktwittergoogle_plusredditpinterestlinkedinmail

Dodaj komentarz