ViewHolder パターンのアダプターがあります。TextView と ImageView があります。ImageView を表示するかどうかを確認するには、アダプターのデータベースを確認する必要があります。問題は、可視性を View.VISIBLE に設定し、他の位置にある他の ImageView にも設定することです。私のデータベースには、これらのイメージビューに関連するデータは含まれていませんが、正しく設定されているデータのみが含まれていると確信しています。
これが私のコードです(うまく機能したため、テキストビューのセットの一部を削除しました):
public class ChaptersAdapter extends ArrayAdapter<List> {
private final Context context;
private final ArrayList<List> list;
ViewHolder viewHolder;
DatabaseHandler dh;
SQLiteDatabase db;
ArrayList<BookmarksHandler> bookmarksAL;
public ChaptersAdapter(Context context, ArrayList<List> list) {
super(context, R.layout.chaptersadapter, list);
this.context = context;
this.list = list;
}
static class ViewHolder{
TextView titolo;
ImageView imageView;
}
@Override
public View getView(int position, View rowView, ViewGroup parent) {
dh = new DatabaseHandler(context);
db = dh.getWritableDatabase();
bookmarksAL = dh.getAllBookmarks(db);
List chapters = getItem(position);
if(rowView==null){
LayoutInflater inflater = (LayoutInflater) context.getSystemService(Context.LAYOUT_INFLATER_SERVICE);
rowView = inflater.inflate(R.layout.chaptersadapter, parent, false);
viewHolder = new ViewHolder();
viewHolder.titolo = (TextView) rowView.findViewById(R.id.textView);
viewHolder.imageView = (ImageView) rowView.findViewById(R.id.imageView);
rowView.setTag(viewHolder);
}
else {
viewHolder = (ViewHolder) rowView.getTag();
}
for(int i = 0; i<bookmarksAL.size(); i++){
if(bookmarksAL.get(i).getId_chapter().equals((String)chapters.get(3))){
viewHolder.imageView.setVisibility(View.VISIBLE);
}
}
return rowView;
}
}
そして、ここに私が意味する画面があります:
上記の X のイメージビューではなく、円のイメージビューのみを追加する必要があります。リストビューを下にスクロールすると、ビューホルダーは可視性をデータベースにない他のイメージビューにも表示するように設定しました。