Пользовательский просмотр списка с флажками - PullRequest
0 голосов
/ 06 января 2012

Привет всем :) У меня проблема.

Я сделал пользовательский просмотр списка с флажками.Я хочу, чтобы, когда я нажимаю на просмотр списка, флажок включается, и я сделал это:

prodottiList = new ArrayAdapter<String>(this, R.layout.prodotti_row, R.id.maggiore, prodottoArray) {


        public View getView(int position, View convertView, ViewGroup parent) {

            View adapterView = super.getView(position, convertView, parent);

            String item = prodottoArray.get(position);

            currentCheckBox = (CheckBox)adapterView.findViewById(R.id.checkBox);

            Cursor c2 = myDb.rawQuery("SELECT * FROM selezionati WHERE prodotto='"+item+"'", null);
            int selezionatoId = c2.getColumnIndex("prodotto");
            while(c2.moveToNext()){
                  String selezionato = c2.getString(selezionatoId);

                  currentCheckBox.setChecked(true);
            }
            c2.close();


            listView.setOnItemClickListener(new OnItemClickListener(){

                @Override
                public void onItemClick(AdapterView<?> arg0, View arg1, int pos, long id) {

                    CheckBox currentCheckBoxSel = (CheckBox)arg1.findViewById(R.id.checkBox);



                    String valore = prodottoArray.get((int) id);
                    myDb.execSQL("CREATE TABLE IF NOT EXISTS selezionati (id VARCHAR, prodotto VARCHAR, categoria VARCHAR, lista VARCHAR);");
                    Cursor c = myDb.rawQuery("SELECT * FROM selezionati WHERE prodotto='"+valore+"' AND lista='"+nomeListaApostrofo+"' ", null);

                    int conteggio = c.getCount();
                    if(conteggio == 0){
                        currentCheckBoxSel.setChecked(true);
                        myDb.execSQL("INSERT INTO selezionati VALUES ('"+id+"','"+ valore +"','"+ categoria +"','"+ nomeListaApostrofo +"');");

                    }else{
                        currentCheckBoxSel.setChecked(false);
                        myDb.execSQL("DELETE FROM selezionati WHERE prodotto='"+ valore +"' AND lista='"+nomeListaApostrofo+"' AND categoria='"+categoria+"'  ;");
                        myDb.execSQL("DELETE FROM table_"+nomeListaEdit+" WHERE prodotto='"+ valore +"' ;");
                        myDb.execSQL("DELETE FROM completati WHERE prodotto='"+ valore +"' AND lista='"+nomeListaApostrofo+"' ;");

                    }
                    c.close();
                }

            });             

            return adapterView;
        }

Но если я нажимаю на первые флажки, включаю первый и последний.Если я нажму второй поворот на второй и предпоследний?Зачем ?Большое спасибо и простите за английский

1 Ответ

1 голос
/ 06 января 2012

Привет, Smile, это распространенная проблема, когда мы используем пользовательский просмотр списка. Это происходит, когда просмотр списка ленив, и он использует просмотр других ... вот почему чекбокс проверяется как sonn, когда вы прокручиваете список. используйте концепцию ViewHolder для просмотра списка .U просто найдите концепцию viewHolder u вы получите количество сайтов, объясняющих просмотр списка с использованием viewHolder.

Ваше текущее решение находится по этой ссылке:

Сохранение состояния флажка в виде списка при использовании настраиваемого BaseAdapter в Android?

Надеюсь, это поможет ..

...