在我的 android 应用程序的一部分中,我有一个ListView
显示表中的条目列表。当用户点击一个ListView
项目时,会显示该项目的新Intent
项目。
在新的意图中,用户可以对该条目进行一些操作,如阅读、编辑、收藏(以及当项目已经收藏时取消收藏)。在详细意图中,我将其表中条目的“标记”列更改为1当它被收藏时和0时不受欢迎。
它工作正常。但问题出在我的主人身上ListView
。我CursorAdapter
为我的ListView
. 我想补充ImageView
一点,表明天气条目是否被收藏。在我的ListView
项目的布局文件中,我为此添加了一个ImageView
并将其设置visibility
为GONE
.
我想检测收藏的项目并将其星号设置ImageView
visibility
为VISIBLE
。然后我在我的设备中运行该应用程序。像往常一样,没有一个条目被收藏。然后点击打开该项目的ListView
详细信息页面中的第一个项目。我喜欢它并回到列表。
好的,现在第一个项目上有一个星形图标,但不仅在这个上,还有其他一些项目。这些错误星标项目的详细信息页面显示它不是收藏夹。所以问题不在于我的数据库操作。我还检查了显示标记项目的光标,.getCount()
它还说只有1 个项目收藏。我找不到问题出在哪里。CursorAdapter
我为自定义波纹管编写了简化的源代码:
public class HereIsMyAdapter extends CursorAdapter {
private final LayoutInflater mInflater;
public HereIsMyAdapter(Context context, Cursor cursor) {
super(context, cursor, true);
mInflater = LayoutInflater.from(context);
}
@Override
public void bindView(View view, Context context, Cursor cursor) {
TextView txtTestText = (TextView) view.findViewById(R.id.txtTestText);
ImageView imgMark = (ImageView) view.findViewById(R.id.imgMark);
txtSureAz.setText(cursor.getString(cursor.getColumnIndex("azname")));
boolean isMarked = cursor.getInt(cursor.getColumnIndex("marked")) == 1 ? true : false;
if (isMarked) {
imgMark.setVisibility(0);
}
}
@Override
public View newView(Context context, Cursor cursor, ViewGroup parent) {
View view = mInflater.inflate(R.layout.my_list_item, parent, false);
bindView(view, context, cursor);
return view;
}
}