从SD卡加载图片并在imageview中显示

时间:2014-06-10 07:31:43

标签: android image cursor

我正在尝试加载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;
    }

}
}

1 个答案:

答案 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);
}