如何从资源文件夹加载图像到Android的列表视图

vohkndzv  于 2023-06-28  发布在  Android
关注(0)|答案(6)|浏览(126)

我有一个200图像在资源文件夹我命名为name_1.pngname_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;
}
9w11ddsr

9w11ddsr1#

当你的图像在res文件夹中时,你不能轻易地做到这一点,因为每个资源都是通过一个int id访问的。
你应该考虑把你的图片放到assets文件夹中,你可以像普通文件系统一样访问它。看看资产管理器。

wqlqzqxt

wqlqzqxt2#

如果你想从assets中获取图像,可以尝试以下操作:

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

希望有帮助!!

sz81bmfz

sz81bmfz3#

很简单,只需在**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);
yh2wf1be

yh2wf1be4#

如果你想使用一个基于名称的可绘制文件夹中的图像(从资源名称中获取资源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()));
20jt8wwn

20jt8wwn5#

取一个Integer array作为R.drawable.imageView1......200并传递其值Like

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

wrrgggsh6#

如果你需要检索一个文件夹中的所有图像,而这些图像实际上并不需要通过R.drawable调用来访问,正如GAMA所提到的,你可以使用activity.getAssets调用,在Kotlin中它会是这样的:

private fun getAllImagesFromAssets(activity: Activity): Map<String, Bitmap> {
        val images = mutableMapOf<String, Bitmap>()
        activity.assets.list(imageDatabaseAssetDirectory)?.forEach { imageName ->
            activity.assets.open("$imageDatabaseAssetDirectory/$imageName").apply {
                images[imageName] = getBitmapFromInputStream(this)
            }
        }
        return images
    }

相关问题