[英]how to recyclerview adapter imageview select open camera get image and choose a picture from the photo gallery?
只需單擊 recyclerview 上的 imageview,我想從照片庫中選擇一張圖片。我也可以 imageview 我添加了活動,但我無法將其添加到 recyclerview 適配器。
我在活動中的代碼,我想在單擊 recyclerview 中的 imageview 時執行此操作。 我怎樣才能做到這一點 ?
private void showPictureDialog() {
AlertDialog.Builder pictureDialog = new AlertDialog.Builder(this);
pictureDialog.setTitle(R.string.selectAction);
String[] pictureDialogItems = {
"Galeriden fotağraf seçiniz",
"Kameradan fotağraf seçiniz"};
pictureDialog.setItems(pictureDialogItems,
new DialogInterface.OnClickListener() {
@Override
public void onClick(DialogInterface dialog, int which) {
switch (which) {
case 0:
choosePhotoFromGallary();
break;
case 1:
takePhotoFromCamera();
break;
}
}
});
pictureDialog.show();
}
void choosePhotoFromGallary() {
Intent galleryIntent = new Intent(Intent.ACTION_PICK,
android.provider.MediaStore.Images.Media.EXTERNAL_CONTENT_URI);
startActivityForResult(galleryIntent, 1);
}
void takePhotoFromCamera() {
Intent intent = new Intent(android.provider.MediaStore.ACTION_IMAGE_CAPTURE);
startActivityForResult(intent, 2);
}
@Override
public void onActivityResult(int requestCode, int resultCode, Intent data) {
super.onActivityResult(requestCode, resultCode, data);
if (resultCode == this.RESULT_CANCELED) {
return;
}
if (requestCode == 1) {
if (data != null) {
Uri contentURI = data.getData();
try {
Bitmap bitmap = MediaStore.Images.Media.getBitmap(this.getContentResolver(), contentURI);
Toast.makeText(MainActivity.this, R.string.imageSaved, Toast.LENGTH_SHORT).show();
imgview.setImageBitmap(bitmap);
mycontrol = true;
} catch (IOException e) {
e.printStackTrace();
Toast.makeText(MainActivity.this, R.string.fail, Toast.LENGTH_SHORT).show();
}
}
} else if (requestCode == 2) {
Bitmap thumbnail = (Bitmap) data.getExtras().get("data");
imgview.setImageBitmap(thumbnail);
saveImage(thumbnail);
Toast.makeText(MainActivity.this, R.string.imageSaved, Toast.LENGTH_SHORT).show();
mycontrol = true;
}
}
您可以在您的適配器中創建一個用於單擊項目的接口。
例如:
interface ImageClickListener{
void onImageClicked();
}
在 Adapter 視圖持有者方法中,如下所示。
public static class ItemViewHolder extends RecyclerView.ViewHolder implements View.OnClickListener {
private YourModel mItem;
private ItemClickListener mItemListener;
public ItemViewHolder(View itemView, ItemClickListener listener) {
super(itemView);
mItemListener = listener;
itemView.setOnClickListener(this);
}
@Override
public void onClick(View v) {
switch (v.getId()) {
case R.id.view_id:
mItemListener.onItemClicked(); // You can send any field or model as a param here.
break;
default:
break;
}
}
}
之后,您可以在 Activity/Fragment 中實現此接口,並可以為單擊事件編寫代碼,例如:
@Override
public void onImageClicked() {
//showPictureDialog();
}
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.