Вы можете попробовать что-то вроде,
Определите свой recyclerView и адаптер следующим образом,
ArrayList<Uri> uri = new ArrayList<>();
RecyclerView recyclerView;
HorizontalRecyclerView adapter;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
recyclerView = findViewById(R.id.recyclerview);
adapter = new HorizontalRecyclerView(uri);
recyclerView.setLayoutManager(new LinearLayoutManager(this));
recyclerView.setAdapter(adapter);
}
Шаг 1. Выберите несколько изображений из галереи (может быть внутри onClick)
Intent intent = new Intent(Intent.ACTION_GET_CONTENT);
intent.setType("image/*");
intent.putExtra(Intent.EXTRA_ALLOW_MULTIPLE, true);
startActivityForResult(Intent.createChooser(intent, "Pictures: "), 1);
Шаг 2: После выбора необходимо извлечь URI выбранного изображения и сохранить его в ArrayList<Uri>
@Override
public void onActivityResult(int requestCode, int resultCode, Intent data) {
super.onActivityResult(requestCode, resultCode, data);
if (requestCode == 1) {
if (resultCode == Activity.RESULT_OK) {
if (data.getClipData() != null) {
int count = data.getClipData().getItemCount();
for (int i = 0; i < count; i++) {
uri.add(data.getClipData().getItemAt(i).getUri());
}
adapter.notifyDataSetChanged();
}
} else if (data.getData() != null) {
String imagePath = data.getData().getPath();
}
}
}
Шаг 3: Внести изменения в свой адаптер, как это
public class HorizontalRecyclerView extends RecyclerView.Adapter<HorizontalRecyclerView.HorizontalViewHolder> {
private ArrayList<Uri> uri;
public HorizontalRecyclerView(ArrayList<Uri> uri) {
this.uri = uri;
}
@NonNull
@Override
public HorizontalViewHolder onCreateViewHolder(@NonNull ViewGroup parent, int i) {
LayoutInflater inflater = LayoutInflater.from(parent.getContext());
View view = inflater.inflate(R.layout.item, parent, false);
return new HorizontalViewHolder(view);
}
@Override
public void onBindViewHolder(@NonNull HorizontalViewHolder horizontalViewHolder, int position) {
horizontalViewHolder.mImageRecyclerView.setImageURI(uri.get(position));
}
@Override
public int getItemCount() {
return uri.size();
}
public class HorizontalViewHolder extends RecyclerView.ViewHolder {
ImageView mImageRecyclerView;
public HorizontalViewHolder(View itemView) {
super(itemView);
mImageRecyclerView = itemView.findViewById(R.id.imageView);
}
}
}
Это должно сработать. По ссылке ссылка .