Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/android/187.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 将Int转换为ImageView_Java_Android_Android Studio - Fatal编程技术网

Java 将Int转换为ImageView

Java 将Int转换为ImageView,java,android,android-studio,Java,Android,Android Studio,下面是一些代码: 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 如何将int转

下面是一些代码:

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

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


(我创建了RecyclerView,其中有很多ImageView,我想在这些ImageView中添加带有图像的列表。)

您可以使用
设置ImageResource
。当你调用你的文章类时,也传递视图

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

您可以使用
setImageResource
。当你调用你的文章类时,也传递视图

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类来保存和设置列表中的项目

见此:

如果您有一个列表,您必须编写一个RecyclerAdapter类来保存和设置列表中的项目

见此:

您的代码块显示了一个
文章
类,该类应该附加到
回收视图
,并带有相应的图像,这是我从您的问题中假设的。 在你的评论中你有

for(inti=0;i<30;++i){articles.add(newarticle(i))}

  • 将30设置为硬编码限制,而应将其设置为图像id数组的大小
  • 您知道在添加文章之前正在增加索引,这将导致您丢失索引0处的id
  • 所有这些都是通过构造函数传递一个
    int
    来获取
    文章类中该数组索引处的id
    对象类中不应该有一个
    静态
    图像数组 将您的
    文章
    类更改为如下所示:

    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]);
    }
    
    现在,当您循环浏览并添加文章时,应该是这样的:

    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]);
    }
    
    for(int i=0;i
    现在,您正在将
    imageID
    设置为
    imagedarray
    中的任何值,一旦进入
    RecyclerView
    onBindViewHolder()
    方法,您就可以使用


    setImageDrawable(ContextCompat.getDrawable(context,article(i).getImageID));
    您的代码块显示了一个
    article
    类,该类应该附加到
    RecyclerView
    ,并带有相应的图像,这是我从您的问题中假设的。 在你的评论中你有

    for(inti=0;i<30;++i){articles.add(newarticle(i))}

  • 将30设置为硬编码限制,而应将其设置为图像id数组的大小
  • 您知道在添加文章之前正在增加索引,这将导致您丢失索引0处的id
  • 所有这些都是通过构造函数传递一个
    int
    来获取
    文章类中该数组索引处的id
    对象类中不应该有一个
    静态
    图像数组
  • 将您的
    文章
    类更改为如下所示:

    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]);
    }
    
    现在,当您循环浏览并添加文章时,应该是这样的:

    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]);
    }
    
    for(int i=0;i
    现在,您正在将
    imageID
    设置为
    imagedarray
    中的任何值,一旦进入
    RecyclerView
    onBindViewHolder()
    方法,您就可以使用


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

    您想要实现什么?为什么要将int转换为ImageView?在提问时要更加努力。花一分钟纠正语法和拼写。可能与您想要实现的目标重复?为什么要将int转换为ImageView?在提问时要更加努力。花一分钟纠正您的语法和拼写mar和拼写。可能与Wait重复,我测试了它。它工作正常,但它是MainActivity的一些代码:for(int i=0;i<30;++i)articles.add(new Article(i));不建议使用
    setImageResource
    ,因为它在UI线程上解码
    位图
    。等等,我测试了它。它正常工作,但它是一些主要活动的代码:for(int i=0;i<30;++i)articles.add(new Article(i));不建议使用
    setImageResource
    ,因为它会在UI线程上解码
    位图