gpt4 book ai didi

java - 在 ListView 中保存 Checkbox 的状态,不能使游标最终化

转载 作者:行者123 更新时间:2023-11-29 20:50:44 25 4
gpt4 key购买 nike

这是我实现 bindView 的方式:

@Override
public void bindView(View view, Context context, Cursor cursor)
{
final ViewHolder holder = (ViewHolder) view.getTag();

String name = (cursor.getString(cursor.getColumnIndexOrThrow("NotificationDateFor")));
String image = cursor.getString(cursor.getColumnIndexOrThrow("imageUri"));

System.out.println("cursor.getPosition(test): "+cursor.getPosition());

holder.nametext.setText(name);
// setImage(image, holder.iv);

holder.chk.setOnClickListener(new OnClickListener(){
@Override
public void onClick(View v)
{
if (holder.chk.isChecked())
{
itemChecked.set(cursor.getPosition(), true);
System.out.println("cursor.getPosition(true): "+cursor.getPosition());
}
else if (!holder.chk.isChecked())
{
itemChecked.set(cursor.getPosition(), false);
System.out.println("cursor.getPosition(false): "+cursor.getPosition());
// AddDelete
}
}
});

holder.chk.setChecked(itemChecked.get(cursor.getPosition()));
}

问题出现在itemChecked.set(cursor.getPosition(), true);

问题描述提示我:

Cannot refer to a non-final variable cursor inside an inner class defined in a different method, change the modifier of Cursor to final.

但是,如果我执行 final Cursor cursor,则 onClick 内的位置值不会在滚动时刷新。如果我执行 System.out.println("cursor.getPosition(true): "+cursor.getPosition()); 并且我的复选框检查再次搞砸了,我总是得到 5 的值。

最佳答案

正如错误所说...在监听器中你不能修改一些变量,因为它是内部类,所以声明变量为final:

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

如果需要修改游标,使用需要的值作为final:

final int position = cursor.getPosition();

关于java - 在 ListView 中保存 Checkbox 的状态,不能使游标最终化,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29210302/

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