gpt4 book ai didi

android - 在从 ArrayAdapter 扩展的类中未调用 onActivityResult

转载 作者:行者123 更新时间:2023-11-29 21:40:30 25 4
gpt4 key购买 nike

我进行了搜索,但无法在互联网上找到有用的答案。这就是我提出疑问的原因。我喜欢在自定义 ArrayAdapter 类的 getView 方法中加载相机和捕获图像。相机已加载并捕获图像,但从未调用 onActivityResult()。我的代码如下所示。

       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() 方法。谢谢

最佳答案

首先在类中创建CustomArrayAdapter 类对象,该类必须使用Activityextends >ListActivity 因为 onActivityForResultActivity 类的重写 方法。在您的情况下,您可以按照以下步骤操作:

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;
}
}
}

希望这对你有用,我也做了同样的事情并且对我来说很好....

关于android - 在从 ArrayAdapter 扩展的类中未调用 onActivityResult,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17258722/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com