CursorAdapter を介して DB からの結果を表示する ListView があります...タイトル、テキスト、およびユーザーがそのアイテムを既に表示しているかどうかを示すフラグ (別の画面に移動することによって)...基本的に DB が「訪問済み」の値が 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;
}
}
DBのデータは正しいと確信しています...よろしくお願いします!