android-ViewHolder ImageView setVisibility重复

android-ViewHolder ImageView setVisibility重复,第1张

概述我有一个带有ViewHolder模式的适配器.它具有一个TextView和一个ImageView.我必须对适配器中的数据库进行一些检查,以显示或不显示ImageView.问题是将View.VISIBLE的可见性也设置为其他位置的ImageView.我确定我的数据库不包含那些与那些imageview相关的数据,而只包含那些正确设置

我有一个带有VIEwHolder模式的适配器.它具有一个TextVIEw和一个ImageVIEw.我必须对适配器中的数据库进行一些检查,以显示或不显示ImageVIEw.
问题是将VIEw.VISIBLE的可见性也设置为其他位置的ImageVIEw.我确定我的数据库不包含那些与那些imagevIEw相关的数据,而只包含那些正确设置的数据.

这是我的代码(我删除了textvIEw集合的一部分,因为它运作良好):

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;    }}

这是我的意思的屏幕:

只需要添加带圆圈的imagevIEw,而不是上面带有X的imagevIEw.如果我向下滚动列表视图,则视图持有者会将可见性设置为对不在数据库中的其他图像视图也可见.

解决方法:

由于其回收机制,这是ListVIEw的正常行为.如果不符合条件,请重置ImageVIEw的可见性

for(int i = 0; i<bookmarksAL.size(); i++){              if(bookmarksAL.get(i).getID_chapter().equals((String)chapters.get(3)))  {                  vIEwHolder.imageVIEw.setVisibility(VIEw.VISIBLE);      break;  } else {      vIEwHolder.imageVIEw.setVisibility(VIEw.GONE);  }}
总结

以上是内存溢出为你收集整理的android-ViewHolder ImageView setVisibility重复全部内容,希望文章能够帮你解决android-ViewHolder ImageView setVisibility重复所遇到的程序开发问题。

如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。

欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/web/1211566.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2022-06-04
下一篇 2022-06-04

发表评论

登录后才能评论

评论列表(0条)

保存