2013-06-23 37 views
1

我做了搜索,但無法在Internet中找到有用的答案。這就是爲什麼我提出這個問題。 我喜歡在自定義ArrayAdapter類的getView方法中加載相機並捕獲圖像。相機被加載並捕獲圖像,但不會調用onActivityResult()。我的代碼如下所示。onActivityResult在從ArrayAdapter擴展的類中未調用

 public View getView(int position, View convertView, ViewGroup parent) { 
     View vi=convertView; 
     ViewHolder viewHolder=new ViewHolder(); 
     LayoutInflater inflater = (LayoutInflater) this.getContext() 
       .getSystemService(Context.LAYOUT_INFLATER_SERVICE); 
     if(vi==null){ 
      vi = inflater.inflate(R.layout.list_row, parent, false); 
      viewHolder.id=(TextView)vi.findViewById(R.id.title); 
      viewHolder.thumbnailImage=(ImageView)vi.findViewById(R.id.list_image); 
      viewHolder.arrow=(ImageView)vi.findViewById(R.id.list_arrow); 
      vi.setTag(viewHolder); 
     } 
     else 
      viewHolder=(ViewHolder) vi.getTag(); 



     // Setting all values in listview 
     viewHolder.id.setText(listIDs.get(position)); 
     viewHolder.thumbnailImage.setOnClickListener(new OnClickListener(){ 

      @Override 
      public void onClick(View arg0) { 
       // TODO Auto-generated method stub 
       Intent cameraIntent = new Intent(android.provider.MediaStore.ACTION_IMAGE_CAPTURE); 
       ((Activity)context).startActivityForResult(cameraIntent, CAMERA_REQUEST); 
      } 

     }); 
     return vi; 
    } 

    protected void onActivityResult(int requestCode, int resultCode, Intent data) { 

     if (requestCode == CAMERA_REQUEST && resultCode == RESULT_OK) { 
//   Bitmap photo = (Bitmap) data.getExtras().get("data"); 
//   imageView.setImageBitmap(photo); 
     } 

    } 

然後自定義適配器類是從ListFragment類激活,

customList_Adaptor adapter = new customList_Adaptor(
       getActivity(), R.layout.list_row, listIDs); 

如何修改,使onActivityResult()方法被調用。 謝謝

回答

0

onActivityResult屬於Activity。您只能在Actvity/ListActivity上下文中覆蓋。你可以做的是保持你的ArrayAdapter的子類的引用Actvity/ListActivity中,創建一個方法裏面調用時onActivityResult被觸發,條件都滿足

+0

我是Android新手,不清楚您的意思。任何示例程序? – batuman

+0

他想說的是,如果上面顯示的這個類是您的活動之外的額外類,那麼您必須將它集成到您​​想要捕獲圖像的活動中。這裏有一個簡單的例子:http://devtut.wordpress.com/2011/06/09/custom-arrayadapter-for-a-listview-android/ – Opiatefuchs

0

onActivityResult將在您的活動上被調用。不在你的陣列適配器上。

+0

因此,如何能在我開始?我喜歡在ArrayAdapter類中實現。 – batuman

2

首先在類中創建您的CustomArrayAdapter classobject必須extendsActivityListActivity,因爲onActivityForResultActivity類的overrided方法。你的情況,你可以按照下列步驟操作:

1)使類

import android.graphics.Bitmap; 

public class Items { // You can give any name to this class 

    private Bitmap bitmap; 

    public Bitmap getBitmap() { 
     return bitmap; 
    } 

    public void setBitmap(Bitmap bitmap) { 
     this.bitmap = bitmap; 
    } 

} 

2)類(這與Activity或ListActivity擴展),你應該創建CustomArrayAdapter類的對象,如:

public class YourClassName extends Activity {\ 

     public static final int CAMERA_REQUEST = 1; // here integer value 1 must be same     
                // as you gave in CustomAdapterClass 

     //First make an array list of the class created above 
    ArrayList<Items> camera_pic_array = new ArrayList<Items>(); 

     // make object of CustomArrayAdapter Class 
    CustomArrayAdapter adapter = new CustomArrayAdapter(this, camera_pic_array); 


     /* It is assumed by me that you should have a constructor of your CustomArrayAdapter 
     with two parameters like 
     public CustomArrayAdapter(Context ctx, ArrayList<Items> list){ 
       this.context = context; 
     this.list = list; 
     LayoutInflater inflater = (LayoutInflater) context 
       .getSystemService(Context.LAYOUT_INFLATER_SERVICE); 
     } 
     */ 

     // now here, write onActivityResult code 


    @Override 
    protected void onActivityResult(int requestCode, int resultCode, Intent data) { 
     switch (requestCode) { 
     case CAMERA_REQUEST: { 
      if (resultCode == RESULT_OK) { 
       Bitmap bitmap = (Bitmap) data.getExtras().get("data");    
       Items item = new Items(); 
       item.setBitmap(bitmap); 
       camera_pic_array.add(item); 
       adapter.notifyDataSetChanged(); //you must notify this 
                   // line is very important 

      } 

      break; 
     } 
      } 
     } 

希望這會爲你工作,我做相同的,並且工作正常,我....

+0

@batuman希望這會對你有所幫助 –

相關問題