2012-02-07 4 views
0

나는 갤러리에 표시하려는 arraylist 축소판에 저장된 이미지의 동적 가치가 있습니다.arraylist android에서 갤러리 이미지를로드하는 방법

class ImageAdapter extends BaseAdapter { 
    int mGalleryItemBackground; 
    private Context mContext; 

    private ArrayList<String> thumbnails = new ArrayList<String>(); 


    public ImageAdapter(Context c, ArrayList<String> thumb) { 
     mContext = c; 
     System.out.print("thumbs: " + thumb); 
     thumbnails = thumb; 
    } 

    public int getCount() { 
     return thumbnails.size(); 
    } 

    public Object getItem(int position) { 
     return position; 
    } 

    public long getItemId(int position) { 
     return position; 
    } 



    public View getView(int position, View convertView, ViewGroup parent) { 
     ImageView imageView = new ImageView(mContext); 
     BitmapFactory.Options options = new BitmapFactory.Options(); 
     options.inSampleSize = 0; 
     Bitmap bm = BitmapFactory.decodeFile(thumbnails.get(i), options); 
     imageView.setImageBitmap(bm); 
     imageView.setLayoutParams(new LayoutParams(150, 150)); 
     imageView.setScaleType(ImageView.ScaleType.FIT_XY); 
     return imageView; 
    } 
} 

: ArrayList의 내부 문자열 값

이 코드가 .... 섬네일 (예 /mnt/sdcard/MyApp/Thumbnails/thumb1.png)의 화상 경로이다

Gallery gal1; 
public void onCreate(Bundle savedInstanceState) { 
    super.onCreate(savedInstanceState); 
    setContentView(R.layout.main); 

    gal1 = (Gallery) this.findViewById(R.id.gallery1); 
} 

private void setDisplay(){ 

    OnItemClickListener myItemClickListener = new OnItemClickListener() { 
     @Override 
     public void onItemClick (AdapterView<?> parent, View v, int position, long id) { 
     Toast.makeText(Main.this, "" + position, Toast.LENGTH_SHORT).show(); 
     }; 
    }; 

    gal1.setAdapter(new ImageAdapter(this, _paththumb)); 
} 

은 내가 어떻게 ArrayList의 이미지를로드 할 수

이 코드/방법은 메인 클래스에서 갤러리보기를 표시합니다?

업데이트]

: 내가 당신의 코드 zrgui을 사용 로그 캣 말했다 :

02-07 12:31:56.046: E/AndroidRuntime(3572): FATAL EXCEPTION: main 
02-07 12:31:56.046: E/AndroidRuntime(3572): java.lang.ClassCastException: android.view.ViewGroup$LayoutParams 
02-07 12:31:56.046: E/AndroidRuntime(3572):  at android.widget.Gallery.setUpChild(Gallery.java:769) 
02-07 12:31:56.046: E/AndroidRuntime(3572):  at android.widget.Gallery.makeAndAddView(Gallery.java:738) 
02-07 12:31:56.046: E/AndroidRuntime(3572):  at android.widget.Gallery.layout(Gallery.java:622) 
02-07 12:31:56.046: E/AndroidRuntime(3572):  at android.widget.Gallery.onLayout(Gallery.java:336) 
02-07 12:31:56.046: E/AndroidRuntime(3572):  at android.view.View.layout(View.java:7035) 
02-07 12:31:56.046: E/AndroidRuntime(3572):  at android.widget.LinearLayout.setChildFrame(LinearLayout.java:1249) 
02-07 12:31:56.046: E/AndroidRuntime(3572):  at android.widget.LinearLayout.layoutHorizontal(LinearLayout.java:1238) 
02-07 12:31:56.046: E/AndroidRuntime(3572):  at android.widget.LinearLayout.onLayout(LinearLayout.java:1044) 
02-07 12:31:56.046: E/AndroidRuntime(3572):  at android.view.View.layout(View.java:7035) 
02-07 12:31:56.046: E/AndroidRuntime(3572):  at android.widget.LinearLayout.setChildFrame(LinearLayout.java:1249) 
02-07 12:31:56.046: E/AndroidRuntime(3572):  at android.widget.LinearLayout.layoutVertical(LinearLayout.java:1125) 
02-07 12:31:56.046: E/AndroidRuntime(3572):  at android.widget.LinearLayout.onLayout(LinearLayout.java:1042) 
02-07 12:31:56.046: E/AndroidRuntime(3572):  at android.view.View.layout(View.java:7035) 
02-07 12:31:56.046: E/AndroidRuntime(3572):  at android.widget.FrameLayout.onLayout(FrameLayout.java:333) 
02-07 12:31:56.046: E/AndroidRuntime(3572):  at android.widget.ScrollView.onLayout(ScrollView.java:1205) 
02-07 12:31:56.046: E/AndroidRuntime(3572):  at android.view.View.layout(View.java:7035) 
02-07 12:31:56.046: E/AndroidRuntime(3572):  at android.widget.RelativeLayout.onLayout(RelativeLayout.java:909) 
02-07 12:31:56.046: E/AndroidRuntime(3572):  at android.view.View.layout(View.java:7035) 
02-07 12:31:56.046: E/AndroidRuntime(3572):  at android.widget.FrameLayout.onLayout(FrameLayout.java:333) 
02-07 12:31:56.046: E/AndroidRuntime(3572):  at android.view.View.layout(View.java:7035) 
02-07 12:31:56.046: E/AndroidRuntime(3572):  at android.widget.FrameLayout.onLayout(FrameLayout.java:333) 
02-07 12:31:56.046: E/AndroidRuntime(3572):  at android.view.View.layout(View.java:7035) 
02-07 12:31:56.046: E/AndroidRuntime(3572):  at android.view.ViewRoot.performTraversals(ViewRoot.java:1045) 
02-07 12:31:56.046: E/AndroidRuntime(3572):  at android.view.ViewRoot.handleMessage(ViewRoot.java:1727) 
02-07 12:31:56.046: E/AndroidRuntime(3572):  at android.os.Handler.dispatchMessage(Handler.java:99) 
02-07 12:31:56.046: E/AndroidRuntime(3572):  at android.os.Looper.loop(Looper.java:123) 
02-07 12:31:56.046: E/AndroidRuntime(3572):  at android.app.ActivityThread.main(ActivityThread.java:4627) 
02-07 12:31:56.046: E/AndroidRuntime(3572):  at java.lang.reflect.Method.invokeNative(Native Method) 
02-07 12:31:56.046: E/AndroidRuntime(3572):  at java.lang.reflect.Method.invoke(Method.java:521) 
02-07 12:31:56.046: E/AndroidRuntime(3572):  at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:868) 
02-07 12:31:56.046: E/AndroidRuntime(3572):  at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:626) 
02-07 12:31:56.046: E/AndroidRuntime(3572):  at dalvik.system.NativeStart.main(Native Method) 

답변

0

당신이 모든 확인을해야 다음 ImageAdapter를 초기화 할 때 _paththumb에 이미지 경로가있는 경우. 또한 setDisplay()를 호출하는 것을 잊지 마십시오.

새로운 ImageView를 재사용하는 대신 생성하므로 (따라서 어댑터의 전체 목적을 무효로 함) getView 메소드를 최적화해야합니다.

편집 :의 getView 최적화 :

내가 지금하는 데 문제가 무엇
public View getView(int position, View convertView, ViewGroup parent) { 
      ImageView imageView = (ImageView)convertView; 
      if (imageView == null) { 
      imageView = new ImageView(mContext); 
      } 
      BitmapFactory.Options options = new BitmapFactory.Options(); 
      options.inSampleSize = 0; 
      Bitmap bm = BitmapFactory.decodeFile(thumbnails.get(i), options); 
      imageView.setImageBitmap(bm); 
      imageView.setLayoutParams(new LayoutParams(150, 150)); 
      imageView.setScaleType(ImageView.ScaleType.FIT_XY); 
      return imageView; 
    } 
+0

,합니다 (의 getView를 변경하는 방법을 알아낼 수 없습니다). 누군가 나를 도와 줄 수 있니? – agony

+0

수정 된 방법으로 내 응답을 변경했습니다 – zrgiu

+0

thumbnails.get (i)의 변수 i는 어디에서 왔습니까? – agony

관련 문제