gpt4 book ai didi

android - CursorAdapter 中的复选框

转载 作者:塔克拉玛干 更新时间:2023-11-02 21:16:18 25 4
gpt4 key购买 nike

我读了这个post

但我无法解决我的问题。我在 ListView 中使用 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();
}
});

}

我使用外部数据库和喜欢的列来保存最喜欢的项目。

最佳答案

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

在这里,当滚动 ListView 后调用 bindView 时,您一次又一次地设置 CheckBox 标记。用户选择不会在 CheckBox 中内存和重置。您需要记住用户选择的 CheckBox 并将其设置在 bindView 中。

关于android - CursorAdapter 中的复选框,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23742365/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com