【问题标题】:Android fill array with ImageViewsAndroid 用 ImageViews 填充数组
【发布时间】:2011-12-05 00:06:01
【问题描述】:

我想要一个图像视图数组,但我不知道如何用图像视图类型的对象填充它。

 ImageView[] forAdapter = new ImageView[imageIds.size()];
 for(int i = 0; i < imageIds.size(); i++)
 {
                    ImageView mImageView = new ImageView(context);
                    forAdapter[i] = mImageView.setImageDrawable(((imagesPulled.get(imageIds.get(i)))));
}

这不起作用,因为.setImageDrawable 不返回图像视图,而且我不知道有任何实际返回的对象!

我考虑在数组中使用drawables,但我最终为listview设置了一个arrayadapter,我不能用drawables制作一个R.layout(我会得到一个类转换异常,因为xml文件使用的是ImageView不是可绘制类型),所以我只有 ImageViews 可以放入一个数组中 - 除非我处理错误的问题。

【问题讨论】:

    标签: android listview imageview drawable android-arrayadapter


    【解决方案1】:

    您的代码就快到了!我只是做一个小改动并在下面评论它:

     ImageView[] forAdapter = new ImageView[imageIds.size()];
     for(int i = 0; i < imageIds.size(); i++)
     {
                        forAdapter[i] = new ImageView(context);
                        forAdapter[i].setImageDrawable(imagesPulled.get(imageIds.get(i)));
    }
    

    首先:如果你想初始化forAdapter[i],你不需要创建一个新的变量并赋值给它。就在那儿做吧:

    forAdapter[i] = new ImageView(context);
    

    设置图像(使用 setImageDrawable、setImageResource 等)不会返回任何内容。这是您对图像本身执行的操作,因此您只需从要修改的变量中调用方法即可:

    forAdapter[i].setImageDrawable(imagesPulled.get(imageIds.get(i)));
    

    你已经完成了:) 如果您有任何疑问,请在 cmets 中提问。

    希望对你有帮助。

    【讨论】:

    • 谢谢,是的,我让它工作了。最终为自定义阵列适配器改变了一些东西。我试图跳过自定义数组适配器,尽管它很灵活
    【解决方案2】:

    您的 mImageView 是 ImageView 本身。

    所以,forAdapter[i] = mImageView 应该可以正常工作。如果您使用额外的操作,您可以在分配之前执行它们。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2011-11-29
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2019-01-31
      • 2013-12-22
      • 1970-01-01
      • 2018-02-01
      相关资源
      最近更新 更多