2014-04-22 78 views
0

使listAdapter列出拍攝的照片。我相信在這裏一切都好,可能會出錯? 在此行得到錯誤:ImageView類型中的setImageBitmap(Bitmap)方法不適用於參數(int)

adapter.add(new Photo(bitmap , "date")); 

在類型ImageView的方法setImageBitmap(位圖)是不適用的參數(INT)

public class Photo { 
     public Bitmap icon; 
     public String title; 
     public Photo(){ 
      super(); 
     } 

     public Photo(Bitmap bitmap, String title) { 
      super(); 
      this.icon = bitmap; 
      this.title = title; 
     } 

    } 


public class PhotoAdapter extends ArrayAdapter<Photo> { 

    Context context; 
    int layoutResourceId; 
    Photo data[] = null; 

    public PhotoAdapter(Context context, int layoutResourceId, Photo[] data) { 
     super(context, layoutResourceId, data); 
     this.layoutResourceId = layoutResourceId; 
     this.context = context; 
     this.data = data; 
    } 

    @Override 
    public View getView(int position, View convertView, ViewGroup parent) { 
     View row = convertView; 
     PhotoHolder holder = null; 

     if (row == null) { 
      LayoutInflater inflater = ((Activity) context).getLayoutInflater(); 
      row = inflater.inflate(layoutResourceId, parent, false); 

      holder = new PhotoHolder(); 
      holder.imgIcon = (ImageView) row.findViewById(R.id.imgIcon); 
      holder.txtTitle = (TextView) row.findViewById(R.id.txtTitle); 
      holder.del_but = (ImageView) row.findViewById(R.id.imgDel); 

      row.setTag(holder); 
     } else { 
      holder = (PhotoHolder) row.getTag(); 
     } 

     Photo photo = data[position]; 
     holder.txtTitle.setText(photo.title); 
     holder.imgIcon.setImageBitmap(photo.icon); 

     return row; 
    } 

    static class PhotoHolder { 
     ImageView imgIcon; 
     TextView txtTitle; 
     ImageView del_but; 
    } 
} 

UPDATE

04-22 14:08:46.113: E/AndroidRuntime(30045): FATAL EXCEPTION: main 
04-22 14:08:46.113: E/AndroidRuntime(30045): Process: com.project.simplify, PID: 30045 
04-22 14:08:46.113: E/AndroidRuntime(30045): java.lang.RuntimeException: Failure delivering result ResultInfo{who=null, request=1, result=-1, data=null} to activity {com.project.simplify/com.project.simplify.PhotoUploadActivity}: java.lang.UnsupportedOperationException 
04-22 14:08:46.113: E/AndroidRuntime(30045): at android.app.ActivityThread.deliverResults(ActivityThread.java:3365) 
04-22 14:08:46.113: E/AndroidRuntime(30045): at android.app.ActivityThread.handleSendResult(ActivityThread.java:3408) 
04-22 14:08:46.113: E/AndroidRuntime(30045): at android.app.ActivityThread.access$1300(ActivityThread.java:135) 
04-22 14:08:46.113: E/AndroidRuntime(30045): at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1244) 
04-22 14:08:46.113: E/AndroidRuntime(30045): at android.os.Handler.dispatchMessage(Handler.java:102) 
04-22 14:08:46.113: E/AndroidRuntime(30045): at android.os.Looper.loop(Looper.java:136) 
04-22 14:08:46.113: E/AndroidRuntime(30045): at android.app.ActivityThread.main(ActivityThread.java:5017) 
04-22 14:08:46.113: E/AndroidRuntime(30045): at java.lang.reflect.Method.invokeNative(Native Method) 
04-22 14:08:46.113: E/AndroidRuntime(30045): at java.lang.reflect.Method.invoke(Method.java:515) 
04-22 14:08:46.113: E/AndroidRuntime(30045): at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:779) 
04-22 14:08:46.113: E/AndroidRuntime(30045): at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:595) 
04-22 14:08:46.113: E/AndroidRuntime(30045): at dalvik.system.NativeStart.main(Native Method) 
04-22 14:08:46.113: E/AndroidRuntime(30045): Caused by: java.lang.UnsupportedOperationException 
04-22 14:08:46.113: E/AndroidRuntime(30045): at java.util.AbstractList.add(AbstractList.java:404) 
04-22 14:08:46.113: E/AndroidRuntime(30045): at java.util.AbstractList.add(AbstractList.java:425) 
04-22 14:08:46.113: E/AndroidRuntime(30045): at android.widget.ArrayAdapter.add(ArrayAdapter.java:179) 
04-22 14:08:46.113: E/AndroidRuntime(30045): at com.project.simplify.PhotoUploadActivity.setPic(PhotoUploadActivity.java:163) 
04-22 14:08:46.113: E/AndroidRuntime(30045): at com.project.simplify.PhotoUploadActivity.handleBigCameraPhoto(PhotoUploadActivity.java:205) 
04-22 14:08:46.113: E/AndroidRuntime(30045): at com.project.simplify.PhotoUploadActivity.onActivityResult(PhotoUploadActivity.java:251) 
04-22 14:08:46.113: E/AndroidRuntime(30045): at android.app.Activity.dispatchActivityResult(Activity.java:5423) 
04-22 14:08:46.113: E/AndroidRuntime(30045): at android.app.ActivityThread.deliverResults(ActivityThread.java:3361) 
04-22 14:08:46.113: E/AndroidRuntime(30045): ... 11 more 
+0

什麼是photo.icon – Raghunandan

+0

它必須用相機拍攝圖像 – user3416113

+0

你能提供完整的圖像嗎? –

回答

3

ArrayAdapter.add作品如果數據集是一個集合,例如一個ArrayList。

編輯。發生這種情況是因爲該構造將Java數組作爲參數通過Arrays.asList將其轉換爲List。從文檔Arrays.asList:

返回指定數組中的對象列表。 列表的大小不能修改,即不支持添加和刪除,但可以設置元素。設置元素會修改底層 陣列。從Android的

public ArrayAdapter(Context context, int textViewResourceId, T[] objects) { 
     init(context, textViewResourceId, 0, Arrays.asList(objects)); 
    } 

編輯

代碼,你應該改變來自:

public PhotoAdapter(Context context, int layoutResourceId, Photo[] data) 

public PhotoAdapter(Context context, int layoutResourceId, ArrayList<Photo> data) 

和代碼的相應其餘

+0

因此,捕獲照片後我應該如何使用添加照片項目? – user3416113

+0

而不是有照片[]你應該有ArrayList Blackbelt

+0

我應該把這段代碼放入PhotoAdapter嗎?不,不明白 – user3416113

0

如您的日誌所示,您的錯誤發生在PhotoUploadActivity.setPic(PhotoUploadActivity.java:163)無論你在做什麼,都會在你的onActivityResult中產生一個空的結果。我假設你將這個空的結果給你的Photo.icon成員。

修正了錯誤,那麼你的照片類包含一個真正的位圖,你可以在setImageBitmap使用()只

+0

adapter.add(新照片(位圖,「日期」));這是代碼行。位圖不爲空 – user3416113

相關問題