2014-06-10 2 views
0

나는 sdcard에서 모든 사진을로드하고 내 안드로이드 응용 프로그램의 이미지보기에 표시하려고합니다. 나는 그림을 읽고 비트 맵의 ​​arraylist에 넣기 위해 하나의 커서를 가지고있다. 이제는 sdcard의 모든 사진을로드 할 수 있지만 이미지 뷰에 인쇄하면 표시되지 않습니다. 누군가가 그것을 어떻게하는지 안다면 저를 도우십시오.SD 카드에서 사진을로드하고 이미지보기에 표시

감사합니다. 이것은 활동 코드입니다.

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

결과를 반복하여 반복하는 대신 첫 번째 결과 만 얻습니다. 이것을 시도하십시오 :

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

루프를 추가 할 것입니다. 그러나 첫 번째 결과 만 얻으면 하나의 그림을 얻을 수 있지만 아무 것도 얻지 못하고 배열의 크기는 1입니다. – temerariomalaga

+0

무슨 뜻인지 이해가 안 되니? 결과가 나타나지 않으면 ArrayList의 크기는 어떻게됩니까? –

+0

나는 그것이 배열에 null 값을 넣었고 이것이 1이라고 생각한다. 루프를 시도하고 다음과 같은 오류가 발생합니다 :'6 행, 1 열을 가진 CursorWindow에서 행 1, 열 1을 읽지 못했습니다 ' – temerariomalaga

관련 문제