Kontrollkästchen dynamisch von SQLite in einem Fragment setzen

Ich habe Probleme, die beste Methode zum Speichern und Anzeigen von Kontrollkästchen in einer Listenansicht zu finden.

Im Moment habe ich den Code in der getView-Methode:

@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;
        }

Der db-Helfer nimmt ein Fotoobjekt als Argument und aktualisiert die Zeile, falls vorhanden. Also aktualisiere ich gerade das aktuelle FotoobjektisHidden() um wahr oder falsch zu sein, übergeben Sie das aktualisierte Objekt an db helper.

Die physische Datenbank scheint korrekt aktualisiert zu werden. Ein Problem tritt jedoch auf, wenn der Status der Kontrollkästchen festgelegt wird. Die Kontrollkästchen scheinen nach dem Zufallsprinzip aktiviert oder deaktiviert zu sein.

Ich habe auch das Gefühl, dass dies in getView eine gierige CPU ist, bin mir aber nicht sicher, wie ich das anders machen soll.

Antworten auf die Frage(4)

Ihre Antwort auf die Frage