【问题标题】:Dynamically change image of a Listview/ArrayAdapter动态更改 Listview/ArrayAdapter 的图像
【发布时间】:2013-09-11 07:05:59
【问题描述】:

我有一个ListView,用于在我的应用程序中显示文件/文件夹层次结构。我正在使用带有ImageViewTextView 的自定义布局。我想根据TextView 文本更改ImageView 的图像是以太文件夹或文件。我可以在不使用自定义ArrayAdapter 的情况下执行此操作吗?或者如果我必须使用自定义ArrayAdapter 如何在运行时更改ImageView 图标?

【问题讨论】:

  • 您将不得不编写一个自定义适配器。

标签: java android android-listview android-imageview android-arrayadapter


【解决方案1】:

当列表中的每个条目需要多个变量项时,您必须使用自定义适配器(即,在您的情况下,您有两个,ImageViewTextView)。调用ArrayAdapter.notifyDataSetChanged() 最容易在运行时更改数据。

【讨论】:

    【解决方案2】:

    您可以在自定义适配器的getView功能中查看并根据textview设置imageview。 有关自定义阵列适配器,请参阅 this example

    【讨论】:

      【解决方案3】:

      你可以使用ImageView.setImageResource(int)方法。

      【讨论】:

      • 即使我的图像视图处于不同的布局中,我也可以使用它吗?
      【解决方案4】:

      在您的自定义适配器类中使用此 getView() 方法。

      @Override
      public View getView(int position, View convertView, ViewGroup parent) {
      
          View newRowView = convertView;
          ViewHolder viewHolder;
      
      
          if(newRowView == null)
          {
          LayoutInflater inflator = (LayoutInflater) context.getSystemService(Context.LAYOUT_INFLATER_SERVICE); 
          newRowView = inflator.inflate(R.layout.my_list, parent,false); 
          viewHolder = new ViewHolder();
      
          viewHolder.name = (TextView) newRowView.findViewById(R.id.textInList);
      
          viewHolder.image = (ImageView) newRowView.findViewById(R.id.iconInList);
      
          newRowView.setTag(viewHolder);
      
          }
          else
          {
              viewHolder = (ViewHolder) newRowView.getTag();
      
          }
      
      
          viewHolder.image.setImageDrawable(textImages[position]);
      
          viewHolder.name.setText(names[position]);
      
          return newRowView; 
      }
      
      
      
      static class ViewHolder
      {
          TextView name;
          ImageView image;
      
      }
      

      这里的textImagesnames 是我从活动类传递给自定义适配器的数组。

      这是内存效率最高、速度最快的方法。

      【讨论】:

        【解决方案5】:
        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 2018-01-13
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多