Pregunta casilla de verificación en CursorAdapter


Leo esto enviar

pero no puedo resolver mi problema Estoy usando el CursorAdapter en la vista de lista.

tengo una casilla de verificación en cada elemento de la lista. Si marcó la casilla de verificación y el desplazamiento hacia arriba y hacia abajo. la casilla de verificación se desactivará. No puedo arreglarlo. por favor, ayúdame.

@Override
public void bindView(View view, Context context, final Cursor cursor) {

    TextView tv1 = (TextView)view.findViewById(R.id.txt_name);
    TextView tv2 = (TextView)view.findViewById(R.id.txt_numer);

    tv1.setText(cursor.getString(2));
    tv2.setText(cursor.getString(3));

    final int pos = cursor.getPosition();

    final CheckBox repeatChkBx = (CheckBox)view.findViewById(R.id.favorite_check);

    String likes = cursor.getString(cursor.getColumnIndex("like"));

    if (likes.equals("yes")) {
        repeatChkBx.setChecked(true);
    } else {
        repeatChkBx.setChecked(false);
    }

    repeatChkBx.setOnClickListener(new OnClickListener() {

        @Override
        public void onClick(View view) {
            MyDatabase mydatabase = new MyDatabase(b);
            SQLiteDatabase mydb = mydatabase.getWritableDatabase();
            cursor.moveToPosition(pos);

            if (repeatChkBx.isChecked()) {
                ContentValues cv = new ContentValues();
                cv.put("like", "yes");
                mydb.update("list", cv, "id ="+cursor.getString(1), null);
            } else {
                ContentValues cv = new ContentValues();
                cv.put("like", "no");
                mydb.update("list", cv, "id ="+cursor.getString(1), null);
            }
            mydb.close();
        }
    });

    }

Estoy usando una base de datos externa y una columna similar para guardar el elemento favorito.


6
2018-05-19 16:05


origen


Respuestas:


if (likes.equals("yes")) {
    repeatChkBx.setChecked(true);
} else {
    repeatChkBx.setChecked(false);
}

Aquí establece la marca CheckBox una y otra vez cuando se llama a bindView después de desplazarse por un ListView. La opción del usuario no se memoriza ni se reinicia en la casilla de verificación. Debe memorizar la elección del usuario de CheckBox y establecerla en bindView.


2
2018-05-19 17:04