如何将资源文件夹中的图像加载到android listview中

Posted

技术标签:

【中文标题】如何将资源文件夹中的图像加载到android listview中【英文标题】:how to load images from resources folder into android listview 【发布时间】:2012-06-07 09:29:48 【问题描述】:

我在资源文件夹中有 200 张图片,我将它们命名为 name_1.png,name_2.png。我有一个数组,其中有几个数字,例如2, 4 , 6 ,30 , 40 ... and so on

我想将图像和文本视图加载到 android listview 并根据资源文件夹中的编号显示图像。

为此,我为custom list view 创建了activity classimage adapter class

我可以根据数组数据编号显示text view 数据,但不能显示图像。

谁能建议我如何做到这一点。我在想我必须在getview 方法中编写代码来更改图像。

这是我尝试过的getview 方法

@Override
public View getView(int position, View convertView, ViewGroup parent) 
    convertView = mInflater.inflate(mViewResourceId, null);


    TextView tv1 = (TextView)convertView.findViewById(R.id.tvtype);
    TextView tv2 = (TextView)convertView.findViewById(R.id.tvnumber);
    ImageView i1= (ImageView)convertView.findViewById(R.id.ivlfirst);
    //int i = Integer.parseInt("normal_"+mStrings.get(position)+".png");

i1.setBackgroundResource("normal_"+mStrings.get(position)+".png");
    tv1.setText(mStrings1.get(position));
    tv2.setText(mStrings.get(position));
    return convertView;

【问题讨论】:

在资源文件夹中的意思是res/drawable/对吗? 请制作图片的int数组。 好吧,dipak先生,请您用一些代码告诉您如何做到这一点,这将是很大的帮助先生 对于 res 文件夹下的图像,我已经向您展示了解决方案检查 【参考方案1】:

当您的图像位于 res 文件夹中时,您不能轻易做到这一点,因为每个资源都由一个 int id 访问。

您应该考虑将图像放入您可以像常规文件系统一样访问的资产文件夹中。看看 AssetManager。

【讨论】:

好的先生,我已经把我的图片移到了资产文件夹中,现在我是怎么做的,你能给我一些代码吗?先生【参考方案2】:

如果你想从assets获取图片,试试这个:

InputStream is = ctx.getAssets().open("normal_"+mStrings.get(position)+".png");
Drawable d = Drawable.createFromStream(is, "resourceName");
i1.setBackgroundDrawable(d); //i1 is your imageView

希望有帮助!!

【讨论】:

【参考方案3】:

这很简单,只需在您的 getView() 方法中执行以下操作

 String yourimagename="normal_"+ mStrings.get(position);   // In this no need of image extension like .png,.jpg etc

 int  resImgId= YourActivityName.this.getResources().getIdentifier("Your Package Name:drawable/" +yourimagename, null, null);  

或者试试这个

 int  resImgId= YourActivityName.this.getResources().getIdentifier("Your Package Name:drawable/" +yourimagename, null, null); 

或者试试这个

 int  resImgId= context.getResources().getIdentifier("Your Package Name:drawable/" +yourimagename, null, null); 
 i1.setImageResource(resImgId);

【讨论】:

同样的错误兄弟错误是:方法 getResources() 未定义为 ImageAndTextAdapter 类型 mStrings.get(position) 它返回什么字符串值或整数值并加入chat.***.com/rooms/11936/android-lite 进行讨论,我们将在那里讨论更多内容而不是评论【参考方案4】:

如果您想根据名称使用可绘制文件夹中的图像(从资源名称获取资源 id),请使用 public int getIdentifier (String name, String defType, String defPackage),它会返回给定资源名称的资源标识符,例如:

 int image = getResources().getIdentifier(image_name, "drawable",getPackageName());
 ImageView i1= (ImageView)convertView.findViewById(R.id.ivlfirst);
 i1.setBackgroundResource(image);

对于您的特定情况,您可以使用:

i1.setBackgroundResource(getResources().getIdentifier("normal_"+mStrings.get(position), "drawable",getPackageName()));

【讨论】:

【参考方案5】:

Integer arrayR.drawable.imageView1......200 并传递其值 Like

    private Integer[] Imgid = R.drawable.imageview1,....,200  ;
    i1.setBackgroundResource(Imgid[j]);

【讨论】:

以上是关于如何将资源文件夹中的图像加载到android listview中的主要内容,如果未能解决你的问题,请参考以下文章

如何将图像加载到 Xcode 9 游乐场?

如何将图像从 Android 中的 Drawable 附加到彩信?

如何将可绘制资源中的图像保存到 SD 卡?

将画廊中的所有图像加载到android中的应用程序中

如何将图像加载到操场

如何将图像保存在android画廊中