RecyclerView.Adapter <myadapter.myviewholder>中的onActivityResult

时间:2016-11-08 08:28:15

标签: android android-activity android-recyclerview android-adapter

我尝试从我的适配器中打开图库。

emp_photo_edit.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View v) {
                Intent i = new Intent(Intent.ACTION_PICK,android.provider.MediaStore.Images.Media.EXTERNAL_CONTENT_URI);
                ((EmployeeActivity)context).startActivityForResult(i, 2017);
            }
        });

然后我想在我的imageview中显示选择的图像到我的recycycleview,怎么做?因为我无法在onActivityResult上添加adapter。提前致谢

  

修改

我的完整代码

public static class MyViewHolder extends RecyclerView.ViewHolder {
    ....

    public MyViewHolder(View v) {
        super(v);
        ....

    }
    public void bind(final Employee item, final OnItemClickListener listener, final Context context) {
        ....
        generateDialog(item,dialog_employee);
        ....

    }

    ...
    ...
    void generateDialog(Employee item, View v){
        //Dialog child
        //Photo
        emp_photo_edit.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View v) {
                Intent i = new Intent(Intent.ACTION_PICK,android.provider.MediaStore.Images.Media.EXTERNAL_CONTENT_URI);
                ((EmployeeActivity)context).startActivityForResult(i, 2017);
            }
        });
        ....
    }
}

1 个答案:

答案 0 :(得分:0)

您的结果将在EmployeeActivity onActivityResult中到达。由于您要选择图像,因此结果将是Uri,您必须先检索它,然后绑定到相应的项目。我建议采取以下一系列行动:

  1. 创建一个新的请求代码,用于存储项目位置并标识请求。如果没有其他请求,您只需将您的行ID设为您的请求代码。
  2. 使用Uri获取data.getData()并记住您收到的请求代码。确保结果代码为Activity.RESULT_OK
  3. Uri和请求代码(包含商品ID)提供给Loader或类似内容以检索图片。
  4. 将生成的图片存储在MyViewHolder可访问的项目ID的某个位置。例如,您可以在其中创建一个Map来存储加载的图像。
  5. 在适配器中找到项目ID的位置,并在适配器上调用notifyItemChanged以获取接收的位置。您可以调用notifyItemChanged(int position)进行完全重新绑定,或notifyItemChanged(int position, Object payload) payload将是您的位图。