我一直在创建图像的网格视图,图像存在于Assets文件夹中.
Opening a File from assets folder in android链接帮助我使用位图来读取它.目前的代码是:
public View getView(final int position,View convertView,ViewGroup parent) { try { AssetManager am = mContext.getAssets(); String list[] = am.list(""); int count_files = imagelist.length; for(int i= 0;i<=count_files; i++) { BufferedInputStream buf = new BufferedInputStream(am.open(list[i])); Bitmap bitmap = BitmapFactory.decodeStream(buf); imageView.setImageBitmap(bitmap); buf.close(); } } catch (IOException e) { e.printStackTrace(); } }
我的应用程序从Assets文件夹中读取图像,但它不是遍历网格视图中的单元格.网格视图的所有单元格具有从图像集中选取的相同图像.任何人都可以告诉我如何迭代单元格,仍然有不同的图像?
我在ImageAdapter类中有上述代码,它扩展了BaseAdapter类,在我的主类中,我将其与gridview进行链接:
GridView gv =(GridView)findViewById(R.id.gridview); gv.setAdapter(new ImageAdapter(this,assetlist));
非常感谢任何帮助提前,
萨兰
解决方法
下面的Saran是我用来在图库的资源文件夹中显示图像的.我想像一个gridview是一样的:
public class myActivitye extends Activity { private Gallery mGallery; @Override public void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.main); mGallery = (Gallery) findViewById(R.id.mygalleryinxml); //load images into memory mBitArray = new Bitmap[4]; try { //these images are stored in the root of "assets" mBitArray[0] = getBitmapFromAsset("pic1.png"); mBitArray[1] = getBitmapFromAsset("pic2.png"); mBitArray[2] = getBitmapFromAsset("pic3.png"); mBitArray[3] = getBitmapFromAsset("pic4.png"); } catch (IOException e) { e.printStackTrace(); } mGallery.setAdapter(new GalleryAdapter(this,mBitArray)); } public class GalleryAdapter extends BaseAdapter { //member variables private Context mContext; private Bitmap[] mImageArray; //constructor public GalleryAdapter(Context context,Bitmap[] imgArray) { mContext = context; mImageArray = imgArray; } public int getCount() { return mImageArray.length; } public Object getItem(int position) { return position; } public long getItemId(int position) { return position; } //returns the individual images to the widget as it requires them public View getView(int position,ViewGroup parent) { final ImageView imgView = new ImageView(mContext); imgView.setImageBitmap(mImageArray[position]); //put black borders around the image final RelativeLayout borderImg = new RelativeLayout(mContext); borderImg.setPadding(20,20,20); borderImg.setBackgroundColor(0xff000000);//black borderImg.addView(imgView); return borderImg; } }//end of: class GalleryAdapter /** * Helper Functions * @throws IOException */ private Bitmap getBitmapFromAsset(String strName) throws IOException { AssetManager assetManager = getAssets(); InputStream istr = assetManager.open(strName); Bitmap bitmap = BitmapFactory.decodeStream(istr); istr.close(); return bitmap; } }