Флажок в CursorAdapter
Я прочитал этот пост
но я не могу решить мою проблему. Я использовал CursorAdapter в списке.
У меня есть флажок в каждом элементе списка. Если вы отметили флажок и прокрутку вверх и вниз. флажок будет отключен. я не могу это исправить. Помогите мне, пожалуйста.
@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();
}
});
}
я использую внешнюю базу данных и как столбец для сохранения любимого элемента.
1 ответ
if (likes.equals("yes")) {
repeatChkBx.setChecked(true);
} else {
repeatChkBx.setChecked(false);
}
Здесь вы снова и снова устанавливаете метку CheckBox, когда bindView вызывается после прокрутки ListView. Пользовательский выбор не запоминается и не сбрасывается в CheckBox. Вам необходимо запомнить выбранный пользователем флажок и установить его в bindView.