I am implementing a navigation box with RecyclerView using this tutorial, but I do not want to apply the entire tutorial, I just want to handle the user's click. I implemented onClickListener inside the ViewHolder my MyAdapter class:
public static class ViewHolder extends RecyclerView.ViewHolder implements View.OnClickListener, View.OnLongClickListener{ int Holderid; ImageView imageView, profile; TextView textView, Name, email, drawerTitle; private ClickListener listener; // ViewHolder Constructor with View and viewType as a parameter public ViewHolder(View itemView, int ViewType, ClickListener listener) { super(itemView); if (ViewType == TYPE_HEADER){ itemView.setClickable(false); Name = (TextView) itemView.findViewById(R.id.user_name); email = (TextView) itemView.findViewById(R.id.user_email); profile = (ImageView) itemView.findViewById(R.id.circleView); Holderid = 0; } if(ViewType == TYPE_ITEM) { itemView.setClickable(true); textView = (TextView) itemView.findViewById(R.id.rowText); imageView = (ImageView) itemView.findViewById(R.id.rowIcon); Holderid = 1; // Handle item click and set the selection } if(ViewType == TYPE_SEPARATOR){ itemView.setClickable(false); drawerTitle = (TextView) itemView.findViewById(R.id.drawerTitle); Holderid = 2; } this.listener = listener; itemView.setOnClickListener(this); itemView.setOnLongClickListener(this); } int pos; @Override public void onClick(View v) { if (listener != null) { listener.onItemClicked(getPosition()); pos= getPosition(); Log.d("TAG", "Item clicked at position " + getPosition()); } } @Override public boolean onLongClick(View v) { if (listener != null) { return listener.onItemLongClicked(getPosition()); } return false; } public interface ClickListener { public void onItemClicked(int position); public boolean onItemLongClicked(int position); } }
I cannot figure out how to apply the ClickListener object to the MyAdapter object:
mAdapter = new MyAdapter(dataList, mSelectedPositions, ...?);
so when a user clicks on one item, I can process the user by clicking on MainActivity .
I created the adapter in this way (as indicated in the tutorial):
Entire MyAdapter class: http://pastie.org/private/cibcsj3zieorlkcgh2rm1g
and this is my MainActivity ' onCreate :
@Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); toolbar = (Toolbar) findViewById(R.id.tool_bar); setSupportActionBar(toolbar);
How to pull the onClick result that is present in the MyAdapter class back to my MainActivity ,
int pos; @Override public void onClick(View v) { if (listener != null) { listener.onItemClicked(getPosition()); pos= getPosition(); Log.d("TAG", "Item clicked at position " + getPosition()); } }
so that I can handle actions depending on the position of the clicked item?