我正在尝试加载SD卡中的所有图片并将其显示在我的Android应用程序的imageview中。我有一个光标用于读取图片并将其放入位图的arraylist中。现在我可以加载SD卡的所有图片,但是当我将它打印到imageview时它没有显示。如果有人知道怎么做,请帮助我。
谢谢。 这是活动的代码。
public class VerFotos extends Activity{
public static ArrayList<Bitmap> imagenes;
@Override
public void onCreate(Bundle savedInstanceState){
super.onCreate(savedInstanceState);
imagenes=new ArrayList<Bitmap>();
String[] imgColumnID = { MediaStore.Images.Thumbnails._ID };
@SuppressWarnings("deprecation")
Cursor cursor=managedQuery(
MediaStore.Images.Media.EXTERNAL_CONTENT_URI, imgColumnID,
MediaStore.Images.Media.DATA + " like ? ",
new String[] { "%sdcard/%" }, null);
if(cursor.moveToFirst()){
String result=cursor.getString(0);
byte [] encodeByte=Base64.decode(result,Base64.DEFAULT);
Bitmap bitmap=BitmapFactory.decodeByteArray(encodeByte, 0, encodeByte.length);
imagenes.add(bitmap);
}
String imag=getIntent().getStringExtra("position");
int index=Integer.parseInt(imag);
setContentView(R.layout.fragment_ver_fotos);
ExtendedViewPager mViewPager=(ExtendedViewPager)findViewById(R.id.image);
mViewPager.setAdapter(new TouchImageAdapter());
mViewPager.setCurrentItem(index);
}
static class TouchImageAdapter extends PagerAdapter {
@Override
public int getCount() {
return imagenes.size();
}
@Override
public View instantiateItem(ViewGroup container, int position) {
TouchImageView img=new TouchImageView(container.getContext());
img.setImageBitmap(imagenes.get(position));
container.addView(img, LinearLayout.LayoutParams.MATCH_PARENT, LinearLayout.LayoutParams.MATCH_PARENT);
return img;
}
@Override
public void destroyItem(ViewGroup container, int position, Object object) {
container.removeView((View)object);
}
@Override
public boolean isViewFromObject(View view, Object object) {
return view==object;
}
}
}
答案 0 :(得分:1)
不是在循环中迭代结果,而是只得到第一个结果。试试这个:
while (cursor.moveToNext()) {
String result=cursor.getString(0);
byte [] encodeByte=Base64.decode(result,Base64.DEFAULT);
Bitmap bitmap=BitmapFactory.decodeByteArray(encodeByte, 0, encodeByte.length);
imagenes.add(bitmap);
}