繁体   English   中英

将Int转换为ImageView

[英]Convert Int to ImageView

这是一些代码:

public class Article {
(...)
private static int[] sImages =  { R.drawable.ic_picture};
private ImageView mImage;
public Article(int a)
{
    mImage = sImages[a];
}

在: mImage = sImages[a]; 有此错误:

不兼容的类型
必需:android.wiget.ImageView
找到:整数

如何将int转换为android.widget.ImageView或类似的东西?

(我创建了RecyclerView,并且其中包含很多ImageView,并且我希望这些ImageView包含带有图像的列表。)

您可以使用setImageResource 当您调用您的Article类时,也要传递视图。

private static int[] sImages =  { R.drawable.ic_picture};
private ImageView mImage;
public Article(int a,  View view)
{
    mImage = (ImageView) view.findViewById(R.id.image);
    mImage.setImageResource(sImages[a]);
}

如果有列表,则必须编写一个RecyclerAdapter类来保存和设置列表项。

看到这个: 在Android中将列表和网格与RecylerView一起使用-教程

您的代码块显示了应该与相应图像一起附加到RecyclerViewArticle类,这是我从您的问题中得出的假设。 在您的评论中

for (int i = 0; i < 30; ++i) { articles.add(new Article(i))}

  1. 您将30设置为硬编码限制,而应将其设置为图像ID数组的大小。
  2. 您知道在添加文章之前要增加索引,这会使您迷失索引0处的ID。
  3. 这一切都是通过构造函数传递一个int来获取Article class中该数组索引处的id,而您在对象类中不应具有static图像数组。

更改您的Article类,使其看起来像这样:

public class Article {
    ...
    int imageID;
    public Article(int imageID) {
        this.imageID = imageID;
    }
    public int getImageID() {
        return imageID;
    }
   ...
}

现在,当您遍历并添加文章时,它应该像这样:

for (int i = 0; i < imageIDArray.length; i++) {
    articles.add(new Article(imageIDArray[i]);
}

现在,一旦您进入RecyclerViewonBindViewHolder()方法,就可以将imageID设置为imageIDArray任何值,然后可以通过使用轻松地设置正确的图像

setImageDrawable(ContextCompat.getDrawable(context, article(i).getImageID));

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM