Сначала вы создаете новое действие, которое содержит отображение изображений, например ImageViewActivity.Затем у вас есть несколько вариантов, и мы рассмотрим два из них.
Простой, но не отличный выбор (не лучший архитектурный подход)
Запустите упражнение с помощью адаптера
@Override
public void onBindViewHolder(MyAdapter.ViewHolder viewHolder, final int i){
viewHolder.img.setScaleType(ImageView.ScaleType.CENTER_CROP);
viewHolder.img.setImageResource(galleryList.get(i).getImg());
viewHolder.img.setOnClickListener(new View.OnClickListener(){
@Override
public void onClick(View view) {
Intent intent = new Intent(context, ImageViewActivity.class);
context.startActivity(intent);
}
});
}
Лучший способ
Лучший способ - использовать шаблон делегата.Объяснение: адаптер не обязан знать, что делать при нажатии на элемент.Следовательно, знание должно быть где-то еще, для простоты оно может быть в вашей деятельности.
MyAdapter
public class MyAdapter extends RecyclerView.Adapter<MyAdapter.ViewHolder> {
public class Delegate {
public void onClick(int imageResource);
}
private Delegate delegate;
public MyAdapter (Context context, ArrayList<Cell> galleryList, Delegate delegate){
this.galleryList = galleryList;
this.context = context;
this.delegate = delegate;
}
...
@Override
public void onBindViewHolder(MyAdapter.ViewHolder viewHolder, final int i){
viewHolder.img.setScaleType(ImageView.ScaleType.CENTER_CROP);
viewHolder.img.setImageResource(galleryList.get(i).getImg());
viewHolder.img.setOnClickListener(new View.OnClickListener(){
@Override
public void onClick(View view) {
delegate.onClick(galleryList.get(i).getImg());
}
});
}
}
GalleryActivity
public class GalleryActivity extends AppCompatActivity implements MyAdapter.Delegate {
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_gallery);
...
MyAdapter adapter = new MyAdapter(getApplicationContext(), cells, this);
recyclerView.setAdapter(adapter);
...
}
@Override
public void onClick() {
Intent intent = new Intent(this, ImageViewActivity.class);
context.startActivity(intent);
}
}
Если вы действительно заинтересованы в том, какая часть кода должна быть, где вы можете взглянуть на архитектурные шаблоны, такие как MVC, MVP, MVVM или Чистая архитектура (более поздняя версия должна обогнать остальные).Есть примеры проектов, предоставляемых Google с различными архитектурами: https://github.com/googlesamples/android-architecture