Android 如何在ListView适配器的ImageButton中动态显示捕获的图像?

Android 如何在ListView适配器的ImageButton中动态显示捕获的图像?,android,android-listview,android-imagebutton,Android,Android Listview,Android Imagebutton,我有一个列表视图。包含图像按钮、按钮和文本视图。如果我按下imagebutton,它将转到照相机。我不知道如何在imagebutton中设置图像。我的密码在这里。谁来帮帮我 public class AddCertificateActivity extends ActionBarActivity { private String[] UnderGraduate={"Passport Front","Passport back","10th Mark Sheet",

我有一个
列表视图
。包含
图像按钮
按钮
文本视图
。如果我按下
imagebutton
,它将转到照相机。我不知道如何在
imagebutton
中设置图像。我的密码在这里。谁来帮帮我

public class AddCertificateActivity extends ActionBarActivity {

    private String[] UnderGraduate={"Passport Front","Passport back","10th Mark Sheet",
            "12th Mark Sheet","IELTS or English proficiency letter by School"};

    private String[] Graduate={"Passport Front","Passport back","10th Mark Sheet",
            "12th Mark Sheet","Ist year Detail marks","2nd year Detail marks",
            "3rd year Detail marks","Final year Detail marks","Degree Copy",
            "IELTS or English proficiency letter by School","Experience Certificate( if any)"};

    private String[] PostGraduate={"Passport Front","Passport back","10th Mark Sheet",
            "12th Mark Sheet","Ist year Detail marks","2nd year Detail marks",
            "3rd year Detail marks","Final year Detail marks","Degree Copy",
            "IELTS or English proficiency letter by School","Current Resume",
            "Experience Certificate( if any)"};

    private ListView listView=null;
    private String[] data;
    private ImageButton img_Certificate;
    private TextView certificate_Name;
    private Button add;

    private static File mediaFile = null, mediaStorageDir;
    private static final String IMAGE_DIRECTORY_NAME = "Education App";
    private static final int CAMERA_REQUEST_CODE=100;
    private static final int UPLOAD_REQUEST_CODE=200;
    private static final int MEDIA_TYPE_IMAGE = 1;
    private Uri fileUri;
    public ViewHolder view;
    public CertificateAdapter adapter;

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_add_certificate);
        setResult(RESULT_OK);

        listView=(ListView)findViewById(R.id.listView);
        img_Certificate=(ImageButton)findViewById(R.id.img_Certificate);
        certificate_Name=(TextView)findViewById(R.id.header);
        add=(Button)findViewById(R.id.btn_Add);

        String course=getIntent().getStringExtra("Course");
        Log.i("Course", course);
        if(course.equals("UNDERGRADUATE DIPLOMA AND DEGREE"))
        {
            data=UnderGraduate;
            Log.i("If","Entered");
        }
        else if(course.equals("GRADUATE DIPLOMA"))
        {
            data=Graduate;
            Log.i("Else If","Entered");
        }
        else
        {
            data=PostGraduate;
            Log.i("Else","Entered");
        }
        Log.i("List", ""+data);
        listView.setAdapter(new CertificateAdapter(this,R.layout.list_row,data));


    }
}

public class CertificateAdapter extends ArrayAdapter<String> {

    Context context;
    String[] data;
    int layoutResourceId;
    private static final int MEDIA_TYPE_IMAGE = 1;
    private Uri fileUri;
    private static final int CAMERA_REQUEST_CODE=100;
    public Bitmap bitmap;

    public CertificateAdapter(Context context,int resources, String[] data) {

        super(context,resources,data);
        this.context=context;
        this.data=data;
        this.layoutResourceId=resources;
    }
    public class ViewHolder {
        public ImageButton btn_Image;
        public TextView text;
        public Button add;
    }


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


        if (convertView == null) {
            LayoutInflater mInflater=((Activity)context).getLayoutInflater();
            convertView = mInflater.inflate(R.layout.list_row, null);
            holder = new ViewHolder();
            holder.btn_Image = (ImageButton)convertView.findViewById(R.id.img_Certificate);
            holder.text=(TextView)convertView.findViewById(R.id.header);
            holder.add=(Button)convertView.findViewById(R.id.btn_Add);

            convertView.setTag(holder);
        } else 
            holder = (ViewHolder) convertView.getTag();

        holder.text.setText(data[position]);

        holder.btn_Image.setOnClickListener(new OnClickListener() {

            @Override
            public void onClick(View v) {

                Intent cameraIntent=new Intent(MediaStore.ACTION_IMAGE_CAPTURE);

        ((AddCertificateActivity)context).startActivityForResult(cameraIntent, CAMERA_REQUEST_CODE);

            }
        });

    return convertView;
    }
公共类AddCertificateActivity扩展了ActionBarActivity{
私有字符串[]本科={“护照正面”、“护照背面”、“第十标记页”,
“12分表”、“雅思或学校英语水平信”};
私有字符串[]毕业生={“护照正面”、“护照背面”、“第十标记页”,
“第12年标记表”、“第一年详细标记”、“第二年详细标记”,
“第三年详细分数”、“最后一年详细分数”、“学位复印件”,
“雅思或学校英语水平证书”、“经验证书(如有)”;
私有字符串[]研究生={“护照正面”、“护照背面”、“第十标记页”,
“第12年标记表”、“第一年详细标记”、“第二年详细标记”,
“第三年详细分数”、“最后一年详细分数”、“学位复印件”,
“学校雅思或英语水平信”、“当前简历”,
“经验证书(如有)”;
私有ListView ListView=null;
私有字符串[]数据;
私有ImageButton img_证书;
私有TextView证书\u名称;
私人按钮添加;
私有静态文件mediaFile=null,mediaStorageDir;
私有静态最终字符串IMAGE\u DIRECTORY\u NAME=“教育应用程序”;
专用静态最终int摄像机\u请求\u代码=100;
私有静态最终整数上传请求代码=200;
专用静态最终int媒体类型图像=1;
私有Uri文件Uri;
公众观点;
公共证书适配器;
@凌驾
创建时受保护的void(Bundle savedInstanceState){
super.onCreate(savedInstanceState);
setContentView(R.layout.activity\u add\u证书);
设置结果(结果\正常);
listView=(listView)findViewById(R.id.listView);
img_证书=(ImageButton)findViewById(R.id.img_证书);
证书名称=(TextView)findViewById(R.id.header);
add=(按钮)findViewById(R.id.btn\u add);
字符串course=getIntent().getStringExtra(“course”);
Log.i(“课程”,课程);
if(课程等同(“本科文凭和学位”))
{
数据=本科生;
日志i(“如果”、“输入”);
}
否则,如果(课程等于(“研究生文凭”))
{
数据=毕业生;
Log.i(“否则,如果”、“输入”);
}
其他的
{
数据=研究生;
日志i(“其他”、“输入”);
}
Log.i(“列表”,“数据”);
setAdapter(新的CertificateAdapter(this,R.layout.list_行,data));
}
}
公共类证书Adapter扩展了ArrayAdapter{
语境;
字符串[]数据;
国际布局资源;
专用静态最终int媒体类型图像=1;
私有Uri文件Uri;
专用静态最终int摄像机\u请求\u代码=100;
公共位图;
公共证书适配器(上下文、int资源、字符串[]数据){
超级(上下文、资源、数据);
this.context=context;
这个。数据=数据;
this.layoutResourceId=资源;
}
公共类视图持有者{
公共图像按钮btn_图像;
公共文本查看文本;
公共按钮添加;
}
@凌驾
公共视图getView(int位置、视图转换视图、视图组父视图){
ViewHolder=null;
if(convertView==null){
LayoutInflater mInflater=((活动)上下文)。getLayoutInflater();
convertView=mInflater.充气(R.layout.list_行,空);
holder=新的ViewHolder();
holder.btn_Image=(ImageButton)convertView.findViewById(R.id.img_证书);
holder.text=(TextView)convertView.findViewById(R.id.header);
holder.add=(按钮)convertView.findViewById(R.id.btn_add);
convertView.setTag(支架);
}否则
holder=(ViewHolder)convertView.getTag();
holder.text.setText(数据[位置]);
holder.btn_Image.setOnClickListener(新的OnClickListener(){
@凌驾
公共void onClick(视图v){
Intent cameraIntent=新的Intent(MediaStore.ACTION\u IMAGE\u CAPTURE);
((AddCertificateActivity)上下文)。startActivityForResult(cameraIntent、CAMERA\u请求\u代码);
}
});
返回视图;
}

此方法已放入activityclass

编辑

@Override
    protected void onActivityResult(int requestCode, int resultCode, Intent data) {
        // TODO Auto-generated method stub
        super.onActivityResult(requestCode, resultCode, data);
        if (requestCode == CAPTURE_IMAGE_ACTIVITY_REQUEST_CODE
                && resultCode == RESULT_OK) {

            selectedImagePath = (mPhotoUri.getPath());
            if (selectedImagePath == null) {

                return;
            }
            photo = (Bitmap) BitmapFactory.decodeFile(selectedImagePath);
                    if(adapter!=null){
            adapter.btn_Image.setImageBitmap(photo);
                    }

        }
将此方法从mainactivity调用到适配器。。 这样地 :


谢谢你的回复。我试过了。但是图像在ImageButton中可见。图像在ImageButton中不可见。我可以访问位图。但是imgTakePicture.setImageBitmap(照片)处出现空指针;对不起,我不懂印地语。请用英语告诉我我应该这样写吗?viewHolder.btn_image.setImageBitmap(位图);
public class CertificateAdapter extends ArrayAdapter<String> {

    AddCertificateActivity context;
    String[] data;
    int layoutResourceId;
    private static final int MEDIA_TYPE_IMAGE = 1;
    private Uri fileUri;
    private static final int CAMERA_REQUEST_CODE=100;
    public Bitmap bitmap;

    public CertificateAdapter(AddCertificateActivity context,int resources, String[] data) {

        super(context,resources,data);
        this.context=context;
        this.data=data;
        this.layoutResourceId=resources;
    }



    @Override
    public View getView(int position, View convertView, ViewGroup parent) {



        if (convertView == null) {
            LayoutInflater mInflater=((Activity)context).getLayoutInflater();
            convertView = mInflater.inflate(R.layout.list_row, null);

            btn_Image = (ImageButton)convertView.findViewById(R.id.img_Certificate);
            text=(TextView)convertView.findViewById(R.id.header);
            add=(Button)convertView.findViewById(R.id.btn_Add);

            convertView.setTag(holder);
        }

        text.setText(data[position]);

        btn_Image.setOnClickListener(new OnClickListener() {

            @Override
            public void onClick(View v) {

                Intent cameraIntent=new Intent(MediaStore.ACTION_IMAGE_CAPTURE);

        context.startActivityForResult(cameraIntent, CAMERA_REQUEST_CODE);

            }
        });

    return convertView;
    }
CertificateAdapter adapter=new CertificateAdapter(this,R.layout.list_row,data);
 listView.setAdapter(adapter);