简体   繁体   中英

How to open gallery and select image from adapter class?

I have an recycler view adapter class and in bind view holder i want to get image from gallery and set it to image view. In bindview there are issues coming in this for over riding this basically i want to open gallery and select image and set it on imageview.

 @Override
public void onBindViewHolder(@NonNull ViewHolder holder, final int position) {

    Cheque_Payment chqadd_list = cheques_list.get(position);
    ImageView imageView=holder.imageView;
    holder.imageView.setOnClickListener(new View.OnClickListener() {
        @Override
        public void onClick(View view) {
            Intent intent = new Intent();
            intent.setType("images/*");
            intent.setAction(Intent.ACTION_GET_CONTENT);
            contxt.startActivity(intent);
            startActivityForResult(intent,IMG_REQUEST);
        }
    });


    holder.Chq_Amount.setText(cheques_list.get(position).getChequeAmount());
    holder.Chq_No.setText(cheques_list.get(position).getChequeNumber());
    holder.Chq_Date.setText(cheques_list.get(position).getChequeDate());
}


@Override
protected void onActivityResult(int requestCode, int resultCode, Intent data) {
    super.onActivityResult(requestCode, resultCode, data);
    if (requestCode == IMG_REQUEST && resultCode == RESULT_OK && data != null) {
        Uri path = data.getData();
        try {

          Bitmap bitmap = MediaStore.Images.Media.getBitmap(getContentResolver(), path);
            imageview.setImageBitmap(bitmap);
            imageview.setVisibility(View.VISIBLE);

            // chx.setChequeImage(imageview.);

        } catch (IOException e) {
            e.printStackTrace();
        }
    }
}

Try this code.. make interface into adapter class for click handling..

    OnItemClick onItemClick;

public void setOnItemClick(OnItemClick onItemClick) {
    this.onItemClick = onItemClick;
}

public interface OnItemClick {
    void getPosition(String data); //pass any things
}

after that click event into onBind..

@Override
public void onBindViewHolder(ItemViewHolder holder, final int position) {
    // below code handle click event on recycler view item.
    final String data = mStringList.get(position);
    holder.textView.setText(data);
    holder.pulshButton.setOnClickListener(new View.OnClickListener() {
        @Override
        public void onClick(View view) {
            onItemClick.getPosition(data);
        }
    });

}

after adapter bind into recycler view it means adapter not null then called below method..

        adpater.setOnItemClick(new RecyclerViewAdpater.OnItemClick() {
        @Override
        public void getPosition(String data) {
            // define your camera or gallery image pick method code.
        }
    });

here is an example of how to get an image from a gallery and set it to image view

adapter class for click handling

@Override
public void onBindViewHolder(@NonNull Viewholder holder, final int position) {
 
    holder.imageView.setOnClickListener(new View.OnClickListener() {
        @Override
        public void onClick(View v) {
            requestcode = position;
            Intent pickPhoto = new Intent(Intent.ACTION_PICK,
            android.provider.MediaStore.Images.Media.EXTERNAL_CONTENT_URI);
            activity.startActivityForResult(pickPhoto, 1);
        }
    });
    
}

add function to update the recyclerview

@Override
    protected void onActivityResult(int requestCode, int resultCode, @Nullable Intent data) {
        super.onActivityResult(requestCode, resultCode, data);
        if(requestCode== requestcode)
        {
            if (resultCode == RESULT_OK) {
                Uri selectedFileURI = data.getData();
                Log.e("FileUpload : " , String.valueOf(selectedFileURI));
                imagevalues.get(requestCode).setName(String.valueOf(selectedFileURI));
                AdapterFunction(imagevalues);

            }

    }

}

The technical post webpages of this site follow the CC BY-SA 4.0 protocol. If you need to reprint, please indicate the site URL or the original address.Any question please contact:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM