public
class
ArtworkAdapter
extends
RecyclerView.Adapter<ArtworkViewHolder> {
interface
Listener {
void
onArtworkClicked(Artwork artwork);
}
private
List<Artwork> items =
new
ArrayList<>();
private
Listener listener;
public
void
setListener(Listener listener) {
this
.listener = listener;
}
public
void
submitList(List<Artwork> items) {
this
.items = items;
notifyDataSetChanged();
}
@Override
public
int
getItemCount() {
return
items.size();
}
@NonNull
@Override
public
ArtworkViewHolder onCreateViewHolder(
@NonNull
ViewGroup parent,
int
viewType) {
View itemView = LayoutInflater.from(parent.getContext()).inflate(R.layout.item_artwork, parent,
false
);
return
new
ArtworkViewHolder(itemView, listener);
}
@Override
public
void
onBindViewHolder(
@NonNull
ArtworkViewHolder holder,
int
position) {
Artwork artwork = getItem(position);
holder.bind(artwork);
}
private
Artwork getItem(
int
position) {
return
items.get(position);
}
}
public
class
ArtworkViewHolder
extends
RecyclerView.ViewHolder {
private
final
ItemArtworkBinding binding;
private
ArtworkAdapter.Listener listener;
public
ArtworkViewHolder(
@NonNull
View itemView, ArtworkAdapter.Listener listener) {
super
(itemView);
binding = ItemArtworkBinding.bind(itemView);
this
.listener = listener;
}
public
void
bind(Artwork artwork) {
Glide.with(binding.artworkImage)
.load(artwork.getImage())
.into(binding.artworkImage);
binding.nameText.setText(artwork.getArtName());
binding.priceText.setText(String.valueOf(artwork.getPrice()));
itemView.setOnClickListener(v -> {
listener.onArtworkClicked(artwork);
});
}
}