public
class
MyRecyclerAdapter
extends
RecyclerView.Adapter<MyRecyclerAdapter.ViewHolder> {
private
final
List<ItemData> itemData;
public
MyRecyclerAdapter(List<ItemData> itemData) {
this
.itemData = itemData;
}
public
interface
MyRecyclerViewClickListener {
void
onItemClicked(
int
position);
void
onItemLongClicked(
int
position);
void
onImageViewClicked(
int
position);
}
private
MyRecyclerViewClickListener mListener;
public
void
setOnClickListener(MyRecyclerViewClickListener listener) {
this
.mListener = listener;
}
@NonNull
@Override
public
ViewHolder onCreateViewHolder(
@NonNull
ViewGroup parent,
int
viewType) {
View view = LayoutInflater.from(parent.getContext()).inflate(R.layout.item_list, parent,
false
);
return
new
ViewHolder(view);
}
@Override
public
void
onBindViewHolder(
@NonNull
final
ViewHolder holder,
int
position) {
final
ItemData item = getItem(position);
holder.bind(item);
holder.button.setOnClickListener(
new
View.OnClickListener() {
@Override
public
void
onClick(View v) {
if
(mListener !=
null
) mListener.onItemClicked(holder.getAdapterPosition());
}
});
holder.itemView.setOnClickListener(
new
View.OnClickListener() {
@Override
public
void
onClick(View v) {
if
(mListener !=
null
) mListener.onItemClicked(holder.getAdapterPosition());
}
});
holder.image.setOnClickListener(
new
View.OnClickListener() {
@Override
public
void
onClick(View v) {
if
(mListener !=
null
) mListener.onImageViewClicked(holder.getAdapterPosition());
}
});
holder.itemView.setOnLongClickListener(
new
View.OnLongClickListener() {
@Override
public
boolean
onLongClick(View v) {
if
(mListener !=
null
) {
mListener.onItemLongClicked(holder.getAdapterPosition());
return
true
;
}
return
false
;
}
});
}
@Override
public
int
getItemCount() {
return
itemData.size();
}
private
ItemData getItem(
int
position) {
return
itemData.get(position);
}
public
static
class
ViewHolder
extends
RecyclerView.ViewHolder {
Button button;
ImageView image;
public
ViewHolder(
@NonNull
View itemView) {
super
(itemView);
image = itemView.findViewById(R.id.image);
button = itemView.findViewById(R.id.rebtn);
}
public
void
bind(ItemData item) {
image.setImageResource(item.getImage());
button.setBackgroundResource(item.getDrawableId());
}
}
}