2017-04-18 63 views
-2

我有一个画廊 我的画廊中有一些图片中有可绘制的图片。就像这第一次,我把它放入Integer数组中就像这样。从资产中读取图像并填入数组

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

} 

现在我想将我的图像转化为资产。我喜欢这样,我读了我的形象名称,然后将其设置为我的形象。但我只读了一个图像名称。我不知道如何读取所有图像的名称并打开它们。

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? 

回答

1

在资产目录中创建子文件夹。使用getAssets()列表()从资产中获得了所有文件名:

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); 
+0

我有这条线的错误String [] images = getAssets()列表( “图像”)。 – nsr

+0

我把它放在试图抓住并运行它,但没有显示,我的图像不显示 – nsr

+0

谢谢,我找到了方法 – nsr

0

现在我想将我的图像转化为资产。

起初让您的图像转换成图像文件夹,然后用这种方式

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

我希望把他们的资产不drwable,我说在我的问题 – nsr

+0

http://stackoverflow.com/questions/7645268/how-to-load-a-image-from-assets –

+0

http://stackoverflow.com/questions/11734803/load-an-image-from-assets-folder –

0

你在你的资产文件夹

assets 
|__img1 
|__img2 
|__img3 

有这个层次,你可以让他们这样

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

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

如果你有子文件夹在资产中,把它的名字放在list("sub_folder");

你可以在你的活动中得到这个列表,如果你在片段中,你将不得不做getActivity()getAssets().list("");。一旦你有你的图片名称列表,你可以将它传递给你的适配器,并可以在你的getView()方法w.r.t位置使用它。

+0

在哪里放这个代码?我不想去.. – nsr

+0

你想获得所有你放在你的资产中的名字。 'list'将包含所有这些名称,您可以循环它们以获取每个单独的名称。 –

+0

在我的画廊我想给他们看 – nsr