I am trying to get clicks on RecyclerView elements for which I use a callback mechanism. I created the OnItemClickListener interface and inside the user adapter, I wrote the logic for click detection using View.OnClickListener . But I get a callback in myActivity after double clicking on any item in the list. I donโt understand what is going on here!
Code inside action:
mAdapter = new AppAdapter(this, mAppList, new OnItemClickListener() { @Override public void onItemClick(View v, int position) { Toast.makeText(SelectAppActivity.this, "Hello", Toast.LENGTH_SHORT).show(); } }); recyclerview.setAdapter(mAdapter);
Code for the interface:
public interface OnItemClickListener { void onItemClick(View v, int position); }
Code for user adapter:
public class AppAdapter extends RecyclerView.Adapter<AppAdapter.ItemViewHolder> { List<App> mAppList; List<App> mFilterAppList; Activity context; OnItemClickListener onItemClickListener; public AppAdapter(Activity context, List<App> appList, OnItemClickListener onItemClickListener) { super(); this.context = context; this.mAppList = appList; this.mFilterAppList = appList; this.onItemClickListener = onItemClickListener; } @Override public ItemViewHolder onCreateViewHolder(final ViewGroup parent, int viewType) { final View view = LayoutInflater.from(parent.getContext()).inflate(R.layout.item_app_list, parent, false); final ItemViewHolder viewHolder = new ItemViewHolder(view); view.setOnClickListener(new View.OnClickListener() { @Override public void onClick(View v) { onItemClickListener.onItemClick(v,4); } }); return viewHolder; } @Override public void onAttachedToRecyclerView(RecyclerView recyclerView) { super.onAttachedToRecyclerView(recyclerView); } @Override public void onBindViewHolder(ItemViewHolder holder, int position) { final App app = mAppList.get(position); holder.name.setText(app.getmName()); holder.icon.setImageDrawable(app.getmAppIcon()); } @Override public int getItemCount() { return mAppList.size(); } public void setFilter(List<App> appList) { mAppList = new ArrayList<>(); mAppList.addAll(appList); notifyDataSetChanged(); } public static class ItemViewHolder extends RecyclerView.ViewHolder { public TextView name; public ImageView icon; public ItemViewHolder(View view) { super(view); name = (TextView) itemView.findViewById(R.id.app_name); icon = (ImageView) itemView.findViewById(R.id.app_icon); } } }
source share