从资产中读取图像并填充数组

Reading images from asset and fill in the array

我有一个画廊 我的图库中有一些可绘制的图片。像这样,首先我像这样将 into 放入 Integer Array 中。

Integer stickers_big[] = { R.drawable.stck1, R.drawable.stck2,...}

这是我的适配器:

    class stickersAdapter extends BaseAdapter {
    Context ctx;

    public stickersAdapter(FirstActivity act) {
        // TODO Auto-generated constructor stub
        this.ctx = act;
    }

    @Override
    public int getCount() {
        // TODO Auto-generated method stub
        return stickers_drawable.length;
    }

    @Override
    public Object getItem(int position) {
        // TODO Auto-generated method stub
        return null;
    }

    @Override
    public long getItemId(int position) {
        // TODO Auto-generated method stub
        return 0;
    }

    @Override
    public View getView(int position, View convertView, ViewGroup parent) {
        // TODO Auto-generated method stub
        ImageView imageview = new ImageView(ctx);
        imageview.setImageResource(stickers_drawable[position].intValue());
        imageview.setScaleType(android.widget.ImageView.ScaleType.FIT_XY);

        return imageview;
    }

}

现在我想将我的图像放入资产中。我喜欢这个,我读了我的图像名称,然后将它设置到我的 imagview 中。但我只读了一个图像名称。我不知道如何读取我所有图像的名称并打开它们。

 public View getView(int position, View convertView, ViewGroup parent) {
        // TODO Auto-generated method stub
        ImageView imageview = new ImageView(ctx);
        AssetManager assetManager = getAssets();
        try {
            // get input stream
            InputStream ims = assetManager.open("stck1.png");

            // create drawable from stream
            Drawable d = Drawable.createFromStream(ims, null);

            // set the drawable to imageview
            imageview.setImageDrawable(d);
        }
        catch(IOException ex) {

        }


        return imageview;
    }

}

How to read ALL of my images then open them?

Now I want to put my images into assets .

先把你的图片放在image文件夹里,然后用这个方法

 int imageResource = ctx.getResources().getIdentifier("@drawable/stck1".replace(".jpg", ""), null,ctx.getPackageName());
 imageview.setImageResource(imageResource);

假设您的资产文件夹中有此层次结构

assets
 |__img1
 |__img2
 |__img3 

你可以这样得到它们

try {  
    String[] list = getAssets().list("");

    for(String img: list ){
        //do your stuff here
       }
    } catch (IOException e) {
             e.printStackTrace();
     }

如果您在 assets 中有子文件夹,请将其名称放入 list("sub_folder");

您可以在 activity 中获取此列表,如果您处于片段中,则必须这样做 getActivity()getAssets().list("");。一旦你有了你的图像名称列表,你可以将它传递给你的适配器并可以在你的 getView() 方法 w.r.t 位置使用它。

在资产目录中创建子文件夹。使用 getAssets().list() 从资产中获取所有文件名:

 String[] images =getAssets().list("images");
ArrayList<String> listImages = new ArrayList<String>(Arrays.asList(images));

Now to set image in imageview you first need to get bitmap using image name from assets :

InputStream inputstream=mContext.getAssets().open("images/"
                                      +listImages.get(position));
Drawable drawable = Drawable.createFromStream(inputstream, null);
imageView.setImageDrawable(drawable);