【问题标题】:how to display image dynamically in listview android?如何在listview android中动态显示图像?
【发布时间】:2013-01-12 11:15:15
【问题描述】:

(我在 res/drawable 中有图像,数据库中图像的名称) 我已经完成将图像从 res/drawable 显示到列表视图,但图像显示相同的图片.. 我想显示与其他人不同的图像....

如何从可绘制文件夹更改图像 ID(使用 setImageResource())。我的可绘制文件夹包含超过 1 个图像,我想使用已存储的数据库中的名称更改这些图像..

这是我在教程中的代码...

//数据库的结果(image2.jpg)

public KontakItemListBaseAdapter(Context context, ArrayList<KontakItemDetails> results) {
    itemDetailsrrayList = results;
    l_Inflater = LayoutInflater.from(context);
}

public int getCount() {
    return itemDetailsrrayList.size();
}

public Object getItem(int position) {
    return itemDetailsrrayList.get(position);
}

public long getItemId(int position) {
    return position;
}

public View getView(int position, View convertView, ViewGroup parent) {
    try{
    ViewHolder holder;
    if (convertView == null) {
        convertView = l_Inflater.inflate(R.layout.kontak_details_view, null);
        holder = new ViewHolder();
        holder.txt_itemName = (TextView) convertView.findViewById(R.id.name);
        holder.txt_itemDescription = (TextView) convertView.findViewById(R.id.itemDescription);
        holder.itemImage = (ImageView) convertView.findViewById(R.id.photo);
        convertView.setTag(holder);
    } else {
        holder = (ViewHolder) convertView.getTag();
    }

    holder.txt_itemName.setText(itemDetailsrrayList.get(position).getName());
    holder.txt_itemDescription.setText(itemDetailsrrayList.get(position).getItemDescription());


    holder.itemImage.setImageResource(R.drawable.iddy);

    }catch (Exception ex) {
        throw new Error("kontakitemlistadapter :"+ex.toString());

    }
    return convertView;
}

static class ViewHolder {
    TextView txt_itemName;
    TextView txt_itemDescription;
    TextView txt_itemPrice;
    ImageView itemImage;
}

我想我的问题在这里..

holder.itemImage.setImageResource(R.drawable.iddy);

如何将 R.drawable.iddy 改为路径名??

【问题讨论】:

    标签: android image listview


    【解决方案1】:

    您可以将数组中的所有 Drawable id 获取为:

    private Integer[] images;
    
    Field[] list = R.drawable.class.getFields();
    int count = 0, index = 0, j = list.length;
    
    images = new Integer[count];
    try {
       for(int i=0; i < j; i++)
        images[index++] = list[i].getInt(null);
     } catch(Exception e) {}
    

    现在使用 images Array 将 Adapter 的 getView 方法中的 Image src 设置为:

    holder.itemImage.setImageResource(images[position]);
    

    【讨论】:

    • 你也可以看this例子
    • ok.thanks...如果图像名称彼此具有唯一名称,我可以将名称结果从数据库中放置...例如:“image_komputer.jpg”、“img_mouse.jpg”不是 "image1.jpg","image2.jpg" ??
    • @ltvie :表示您在数据库中的图像名称为 "image_komputer.jpg","img_mouse.jpg"....?
    • 是的,我存储在 db..images 文件中的图像名称我保存在 res/drawable 中...我想将图像加载到 db 中基于列表视图的图像名称 *抱歉我的英语不好。 .
    • @ltvie:我已经与您分享了一个链接,您可以查看this 示例。在此示例中,他仅从名称为 img_ 的可绘制对象中选择图像。我同样可以通过在 for 循环中放置条件来更改代码。并获取仅包含image_ 的图像。你在实现这个方面有什么问题吗?
    【解决方案2】:

    根据上下文更改可绘制引用

    holder.itemImage.setImageResource(R.drawable.iddy);
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2010-10-02
      • 1970-01-01
      • 2023-03-27
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多