Android ViewHolder ImageView设置可见性重复

Android ViewHolder ImageView设置可见性重复,android,listview,adapter,android-viewholder,Android,Listview,Adapter,Android Viewholder,我有一个具有ViewHolder模式的适配器。它有一个TextView和一个ImageView。我必须对适配器中的数据库进行一些检查,以显示ImageView。 问题是将可见性设置为View.VISIBLE也设置为其他位置的其他ImageView。我确信我的数据库不包含与那些imageview相关的数据,而只包含正确设置的数据 这是我的代码(我删除了textview集合的一部分,因为它工作得很好): 公共类ChaptersAdapter扩展了ArrayAdapter{ 私人最终语境; 私人最终阵

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

这是我的代码(我删除了textview集合的一部分,因为它工作得很好):

公共类ChaptersAdapter扩展了ArrayAdapter{
私人最终语境;
私人最终阵列列表;
持票人持票人;
数据库处理程序dh;
sqlitedb数据库;
ArrayList书签;
公共章附录(上下文,数组列表){
super(上下文,R.layout.chaptersadapter,列表);
this.context=上下文;
this.list=列表;
}
静态类视窗夹{
文本视图标题;
图像视图图像视图;
}
@凌驾
公共视图getView(int位置、视图行视图、视图组父视图){
dh=新的DatabaseHandler(上下文);
db=dh.getWritableDatabase();
bookmarksAL=dh.getAllBookmarks(db);
列表章节=获取项目(位置);
if(rowView==null){
LayoutFlater充气器=(LayoutFlater)context.getSystemService(context.LAYOUT\u充气器\u服务);
rowView=充气机。充气(R.layout.chaptersadapter,父级,false);
viewHolder=新的viewHolder();
viewHolder.titolo=(TextView)rowView.findViewById(R.id.TextView);
viewHolder.imageView=(imageView)rowView.findviewbyd(R.id.imageView);
rowView.setTag(viewHolder);
}
否则{
viewHolder=(viewHolder)rowView.getTag();
}

对于(int i=0;i,由于其循环机制,这是
列表视图的正常行为。如果不满足该条件,请重置
图像视图的可见性

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

对于(int i=0;i对于其他不可见的项,您还需要设置如下:

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

用于(int i=0;iThanks非常感谢,如果我找到元素,我还添加了一个中断,因为如果我找到它,循环将继续,它将不匹配其他等式。因此,如果您想更改答案,只为其他用户添加中断!感谢您的提示,我不认为要处理项目与数据库不匹配的情况!我接受您的建议时间到期时回答!我找到的最佳答案:)
  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);
    }