2014-04-22 75 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

相关问题