3

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 のイメージビューではなく、円のイメージビューのみを追加する必要があります。リストビューを下にスクロールすると、ビューホルダーは可視性をデータベースにない他のイメージビューにも表示するように設定しました。

4

2 に答える 2

0

表示されない他のアイテムについては、次のように設定する必要もあります。

  for(int i = 0; i<bookmarksAL.size(); i++){
        if(bookmarksAL.get(i).getId_chapter().equals((String)chapters.get(3))){
            viewHolder.imageView.setVisibility(View.VISIBLE);
        }
        else
            viewHolder.imageView.setVisibility(View.INVISIBLE);
    }

レイアウトが変わるINVISIBLEので設定したほうがいいです。GONE

この助けを願っています!

于 2015-03-15T16:26:09.740 に答える