In our app we have list of messages. We are switching to RecyclerView.
Our messages can consist from texts, images.
Sample message can look like this.
I tried this same way like @user320676, But I tried to complete with a Listener:
interface MultipleClickListener {
void onItemClickOne(int position, View v);
void onItemClickTwo(int position, View v);
void onItemClickThree(int position, View v);
}
then you can use the listener in a activity or fragment. Here you can see my full Adapter:
public class MultipleClicksAdapter extends RecyclerView
.Adapter {
private ArrayList mDataset;
private static MultipleClickListener sClickListener;
static class DataObjectHolder extends RecyclerView.ViewHolder {
@BindView(R.id.multiple_clicks_one_textView)
TextView mOne;
@BindView(R.id.multiple_clicks_two_textView)
TextView mTwo;
@BindView(R.id.multiple_clicks_three_textView)
TextView mThree;
DataObjectHolder(View itemView) {
super(itemView);
ButterKnife.bind(this, itemView);
mOne.setOnClickListener((View v) ->
sClickListener.onItemClickOne(getAdapterPosition(), mOne));
mTwo.setOnClickListener((View v) ->
sClickListener.onItemClickTwo(getAdapterPosition(), mTwo));
mThree.setOnClickListener((View v) ->
sClickListener.onItemClickThree(getAdapterPosition(), mThree));
}
}
void setOnItemClickListener(MultipleClickListener myClickListener) {
this.sClickListener = myClickListener;
}
MultipleClicksAdapter(ArrayList myDataset) {
mDataset = myDataset;
}
@Override
public MultipleClicksAdapter.DataObjectHolder onCreateViewHolder(ViewGroup parent,
int viewType) {
View view = LayoutInflater.from(parent.getContext())
.inflate(R.layout.multiple_clicks_list_item, parent, false);
MultipleClicksAdapter.DataObjectHolder dataObjectHolder = new MultipleClicksAdapter.DataObjectHolder(view);
return dataObjectHolder;
}
@Override
public void onBindViewHolder(MultipleClicksAdapter.DataObjectHolder holder, int position) {
holder.mOne.setText(mDataset.get(position).getmTitle());
holder.mTwo.setText(mDataset.get(position).getmSubTitle());
holder.mThree.setText(mDataset.get(position).getmThirdTitle());
}
@Override
public int getItemCount() {
return mDataset.size();
}
interface MultipleClickListener {
void onItemClickOne(int position, View v);
void onItemClickTwo(int position, View v);
void onItemClickThree(int position, View v);
}
}
Also you can check the complete code in GitHub.