Ustawienie pola wyboru dynamicznie z sqlite w Fragmentie

Mam problem z ustaleniem najlepszego sposobu przechowywania i wyświetlania pól wyboru w widoku listy.

W tej chwili mam kod w metodzie getView:

@Override
        public View getView(final int position, View convertView, ViewGroup parent) {
            View view = convertView;
            //final ViewHolder holder;
            if (convertView == null) {
                convertView = getActivity().getLayoutInflater().inflate(R.layout.grid_item, null);
            }
            ImageView img = (ImageView) convertView.findViewById(R.id.grid_item_img);

            cb = (CheckBox) convertView.findViewById(R.id.chk_box_griditem);


            if(photos.get(position).getIshidden()){
                cb.setChecked(false);
            }else{
                cb.setChecked(true);
            }


            cb.setOnCheckedChangeListener(new CompoundButton.OnCheckedChangeListener() {
                @Override
                public void onCheckedChanged(CompoundButton buttonView,
                        boolean isChecked) {
                    MySQLiteHelper db = MySQLiteHelper.getInstance(getActivity());
                    Log.d("checkbox", "status: " + photos.get(position).getIshidden());

                    if (isChecked) {
                        photos.get(position).setIshidden(true);
                        cb.setChecked(true);
                        Log.d("checkbox", "isChecked");
                        db.updatePhoto(photos.get(position));

                    } else {
                        photos.get(position).setIshidden(false);
                        cb.setChecked(false);
                        Log.d("checkbox", "isCheckedelse");
                        db.updatePhoto(photos.get(position));
                    }

                }
            });

            imageLoader.displayImage(imgUrls[position], img, options, animateFirstListener);

            //img.setImageResource(mImgRes);
            return convertView;
        }

Pomocnik db pobiera obiekt zdjęcia jako argument i aktualizuje wiersz, jeśli istnieje. Więc teraz aktualizuję bieżący obiekt zdjęciaisHidden() wartość true lub false, a następnie przekazanie zaktualizowanego obiektu do db helper.

Fizyczna baza danych wydaje się poprawnie aktualizować. Problem pojawia się jednak, gdy ustawiany jest stan pól wyboru. Pola wyboru wydają się być losowo ustawione jako zaznaczone lub niezaznaczone.

Czuję też, że robienie tego w getView jest cpu greedy, ale nie jestem pewien, jak to zrobić.

questionAnswers(4)

yourAnswerToTheQuestion