good question .. i also run a time to get it :)
so iam going to post you a recycler adapter code to see where to define the onClick
and an Activity to see how to impelement that clicks ..
the adapter
public class ItemAdapter extends RecyclerView.Adapter<ItemAdapter.ItemViewHolder> {
private Context mContext;
private List<Items> mItemsArrayList;
private ItemClickListener mClickListener;
private ItemLongClickListener mLongClickListener;
public ItemAdapter(Context context, List<Items> arrayList) {
mContext = context;
mItemsArrayList = arrayList;
}
@Override
public ItemViewHolder onCreateViewHolder(ViewGroup parent, int viewType) {
LayoutInflater inflater = LayoutInflater.from(mContext);
View view = inflater.inflate(R.layout.lists_list_item, parent, false);
return new ItemAdapter.ItemViewHolder(view);
}
@Override
public void onBindViewHolder(final ItemViewHolder holder, final int position) {
holder.itemName.setText(mItemsArrayList.get(position).getName());
int state = mItemsArrayList.get(position).getState();
final String category = mItemsArrayList.get(position).getCategory();
if (state == 0) {
holder.container.setBackgroundColor(mContext.getResources().getColor(R.color.white_color));
holder.itemName.setTextColor(mContext.getResources().getColor(R.color.colorPrimaryDark));
holder.stateColor.setBackgroundColor(mContext.getResources().getColor(R.color.white_color));
holder.check.setImageDrawable(mContext.getResources().getDrawable(R.drawable.ic_check_gray_24dp));
} else if (state == 1) {
holder.container.setBackgroundColor(mContext.getResources().getColor(R.color.light_gary));
holder.itemName.setTextColor(mContext.getResources().getColor(R.color.gray));
holder.check.setImageDrawable(mContext.getResources().getDrawable(R.drawable.ic_check_black_24dp));
switch (category) {
case "Auto":
holder.stateColor.setBackgroundColor(mContext.getResources().getColor(R.color.purble));
break;
case "Bills":
holder.stateColor.setBackgroundColor(mContext.getResources().getColor(R.color.light_purple));
break;
case "Health":
holder.stateColor.setBackgroundColor(mContext.getResources().getColor(R.color.light_blue));
break;
case "Shop":
holder.stateColor.setBackgroundColor(mContext.getResources().getColor(R.color.green));
break;
case "Travel":
holder.stateColor.setBackgroundColor(mContext.getResources().getColor(R.color.orange));
break;
case "Work":
holder.stateColor.setBackgroundColor(mContext.getResources().getColor(R.color.dark_blue));
break;
}
}
}
@Override
public int getItemCount() {
return mItemsArrayList.size();
}
// allows clicks events to be caught
public void setClickListener(ItemClickListener itemClickListener) {
this.mClickListener = itemClickListener;
}
public void setLongClickListener(ItemLongClickListener itemLongClickListener) {
this.mLongClickListener = itemLongClickListener;
}
// return data
public String getItemName(int id) {
return mItemsArrayList.get(id).getName();
}
// parent activity will implement this method to respond to click events
public interface ItemClickListener {
void onItemClick(View view, int position);
}
public interface ItemLongClickListener {
void onItemLongClick(View view, int position);
}
public class ItemViewHolder extends RecyclerView.ViewHolder implements View.OnClickListener, View.OnLongClickListener {
public LinearLayout container;
public LinearLayout stateColor;
public ImageView check;
public TextView itemName;
public ItemViewHolder(View itemView) {
super(itemView);
itemView.setOnClickListener(this);
itemView.setOnLongClickListener(this);
container = (LinearLayout) itemView.findViewById(R.id.lists_item_container);
stateColor = (LinearLayout) itemView.findViewById(R.id.lists_item_state_color);
check = (ImageView) itemView.findViewById(R.id.lists_item_check);
itemName = (TextView) itemView.findViewById(R.id.lists_item_name);
}
@Override
public void onClick(View view) {
if (mClickListener != null) mClickListener.onItemClick(view, getAdapterPosition());
}
@Override
public boolean onLongClick(View view) {
if (mLongClickListener != null) {
mLongClickListener.onItemLongClick(view, getAdapterPosition());
return true;
} else {
return false;
}
}
}
}
the activity
public class ListsActivity extends AppCompatActivity implements ItemAdapter.ItemClickListener, ItemAdapter.ItemLongClickListener {
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.lists_layout);
usersDbHelper = new MyUsersDbHelper(this);
switch (keyCategory) {
case "":
goNext(keyCategory);
break;
case "Auto":
goNext(keyCategory);
break;
case "Bills":
goNext(keyCategory);
break;
case "Health":
goNext(keyCategory);
break;
case "Shop":
goNext(keyCategory);
break;
case "Travel":
goNext(keyCategory);
break;
case "Work":
goNext(keyCategory);
break;
}
}
private void goNext(final String category) {
if (guide.equals("")) {
title.setText("Lists");
// Find and set empty view on the recycler View, so that it only shows when the list has 0 items.
emptyView = (RelativeLayout) findViewById(R.id.lists_empty_view);
// Find the Recycler View which will be populated with the event data
itemsListView = (RecyclerView) findViewById(R.id.lists_recycler);
itemsListView.addItemDecoration(new DividerItemDecoration(itemsListView.getContext(), DividerItemDecoration.VERTICAL));
itemsListView.setLayoutManager(new LinearLayoutManager(this));
// List<Items> to populate recycler View
itemsList = usersDbHelper.readItemsList(username);
if (itemsList.size() == 0) {
itemsListView.setVisibility(View.GONE);
emptyView.setVisibility(View.VISIBLE);
} else {
itemsListView.setVisibility(View.VISIBLE);
emptyView.setVisibility(View.GONE);
}
eItemAdapter = new ItemAdapter(this, itemsList);
eItemAdapter.setClickListener(this);
eItemAdapter.setLongClickListener(this);
eItemAdapter.notifyDataSetChanged();
itemsListView.setAdapter(eItemAdapter);
search = (ImageView) findViewById(R.id.lists_item_search);
search.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View view) {
showCustomSearchDialog(ListsActivity.this, itemsList);
}
});
listNumber = (TextView) findViewById(R.id.lists_item_num);
listNumber.setText(String.valueOf(itemsList.size()));
}
}
// CLICKS HERE
@Override
public void onItemClick(View view, int position) {
usersDbHelper = new MyUsersDbHelper(this);
String name = itemsList.get(position).getName();
int state = itemsList.get(position).getState();
String username = itemsList.get(position).getUsername();
if (state == 0) {
usersDbHelper.updateItemState(username, name, 1);
itemsList.get(position).setmState(1);
eItemAdapter.notifyItemChanged(position);
} else if (state == 1) {
usersDbHelper.updateItemState(username, name, 0);
itemsList.get(position).setmState(0);
eItemAdapter.notifyItemChanged(position);
}
}
@Override
public void onItemLongClick(View view, int position) {
showCustomDeleteDialog(ListsActivity.this, position);
}
}
hope it help :)
happy programming