**JAVA**
package com.meghlaxshapplications.Upload_Places;
import android.content.Context;
import android.content.Intent;
import android.util.Log;
import android.view.LayoutInflater;
import android.view.View;
import android.view.ViewGroup;
import android.widget.Button;
import android.widget.ImageView;
import android.widget.RadioButton;
import android.widget.RelativeLayout;
import android.widget.Toast;
import androidx.annotation.NonNull;
import androidx.recyclerview.widget.RecyclerView;
import com.bumptech.glide.Glide;
import com.meghlaxshapplications.sairsapata.R;
import java.util.ArrayList;
import java.util.HashMap;
import java.util.LinkedList;
import java.util.List;
public class GalleryAdapter extends RecyclerView.Adapter<GalleryAdapter.viewHolder> {
boolean checkState = false;
HashMap<Integer, String> hashMap = new HashMap<>();
private Context context;
private List<String> images;
private RelativeLayout btn;
private Button buttonuploadcount;
public GalleryAdapter(Context context, List<String> images, RelativeLayout btn, Button buttonuploadcount) {
this.context = context;
this.images = images;
this.btn = btn;
this.buttonuploadcount = buttonuploadcount;
}
@NonNull
@Override
public viewHolder onCreateViewHolder(@NonNull ViewGroup parent, int viewType) {
return new viewHolder(LayoutInflater.from(context).inflate(R.layout.gallery_images_item, parent, false));
}
@Override
public void onBindViewHolder(@NonNull viewHolder holder, int position) {
String image = images.get(position);
Glide.with(context).load(image).placeholder(R.drawable.placeholder).centerCrop().into(holder.gallery_images);
holder.itemView.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
if (holder.image_radio.isChecked()) {
holder.image_radio.setChecked(false);
notifyItemChanged(position);
} else {
holder.image_radio.setChecked(true);
notifyItemChanged(position);
}
if (holder.image_radio.isChecked()) {
hashMap.put(position, images.get(position));
} else {
hashMap.remove(position);
}
if (hashMap.size() == 0) {
btn.setVisibility(View.GONE);
} else {
btn.setVisibility(View.VISIBLE);
}
String count = "Upload " + hashMap.size() + " photos";
buttonuploadcount.setText(count);
// Log.e("Gannnn" , "nnn"+hashMap.size()+hashMap.get(position));
// Intent intent = new Intent(context,UriPrint.class);
// intent.putExtra("uri",hashMap.get(position));
// context.startActivity(intent);
// Log.e("Choosen Images","nnnn"+"namana"+chosenImages.size());
}
});
}
@Override
public int getItemCount() {
return images.size();
}
public class viewHolder extends RecyclerView.ViewHolder {
private RadioButton image_radio;
private ImageView gallery_images;
public viewHolder(@NonNull View itemView) {
super(itemView);
image_radio = itemView.findViewById(R.id.image_radio_button);
gallery_images = itemView.findViewById(R.id.gallery_images);
}
}
public interface PhotoListener {
void onPhotoClick(String path);
}
public HashMap<Integer, String> getHashMap() {
return hashMap;
}
public Boolean getCheckState() {
return checkState;
}
}
Explanation
Multiple radio buttons are enabled once one from the above is clicked in the recycler view. I made a recycler view we show images for gallery or external storage with a radio button for each item and random radio buttons got selected when we select some from the visible items of the recycler view.