我有一个 ListView,它通过 CursorAdapter 显示来自数据库的一些结果...标题、文本和一个标志,以指示用户是否已经查看过该项目(通过将它们带到另一个屏幕)...基本上如果数据库“已访问”值为 0 它需要在项目旁边显示一个小的“新”图标...如果不是它不应该显示任何图标...
问题是,当它加载列表时,它似乎随机分配标志......访问过的没有标志,但一些未访问过的也错过了标志......
我尝试在 BindView 和 NewView 之间移动“已访问”检查,但得到相同的结果......
我的适配器:
public class newsAdapter extends CursorAdapter{
public newsAdapter(Context context, Cursor cursor){
super(context, cursor);
}
@Override
public void bindView(View view, Context context, Cursor cursor) {
TextView title = (TextView) view.findViewById(R.id.newsItemTitle);
TextView text = (TextView) view.findViewById(R.id.newsItemText);
ImageView newflag = (ImageView) view.findViewById(R.id.newsNewFlag);
if(cursor.getInt(cursor.getColumnIndex("visited")) == 0){
Log.i("extra","Not visited yet");
newflag.setImageResource(R.drawable.icon_new);
}
title.setText(cursor.getString(cursor.getColumnIndex("title")));
text.setText(cursor.getString(cursor.getColumnIndex("text"))); iv);
}
@Override
public View newView(Context context, Cursor cursor, ViewGroup parent) {
LayoutInflater inflater = LayoutInflater.from(parent.getContext());
View view = inflater.inflate(R.layout.news_item, parent, false);
return view;
}
}
我确定数据库中的数据是正确的......提前致谢!