title: Multi selection in recyclerview is not working
body: <p>Long click on row of recyclerview is not entered in onClick() I dont understand what is wrong with my code.Following are my MainActivity, adapter and row of my recyclerview which is made using cardview.</p>
  
  <p>Following is my MainActivity.java</p>
  
  <pre><code>public class MainActivity extends AppCompatActivity implements RecyclerView.OnItemTouchListener,
          View.OnClickListener,
          ActionMode.Callback {
  
      ArrayList&lt;ProductPojo&gt; lastNameList;
      private RecyclerView recyclerView;
      private ProductAdapter adapter;
      private List&lt;ProductPojo&gt; albumList;
      GestureDetectorCompat gestureDetector;
      ActionMode actionMode;
  
      /////
      private ProgressDialog pDialog;
      ApiClass apigetOfferList;
      String response;
  
      @TargetApi(Build.VERSION_CODES.LOLLIPOP)
      @Override
      protected void onCreate(Bundle savedInstanceState) {
          super.onCreate(savedInstanceState);
          setContentView(R.layout.activity_main);
  
          recyclerView = (RecyclerView) findViewById(R.id.recycler_view);
          albumList = new ArrayList&lt;&gt;();
          lastNameList = new ArrayList&lt;ProductPojo&gt;(12);
  
          recyclerView.addOnItemTouchListener(
                  new RecyclerItemClickListener(MainActivity.this, new RecyclerItemClickListener.OnItemClickListener() {
                      @Override
                      public void onItemClick(View v, final int position) {
  
                          Toast.makeText(MainActivity.this, "" + position, Toast.LENGTH_SHORT).show();
                          final EditText edittext = new EditText(MainActivity.this);
                          AlertDialog.Builder alert = new AlertDialog.Builder(MainActivity.this);
                          alert.setMessage("Enter Your Last Name");
                          alert.setTitle("Fill me");
  
                          alert.setView(edittext);
  
                          alert.setPositiveButton("Ok", new DialogInterface.OnClickListener() {
                              public void onClick(DialogInterface dialog, int whichButton) {
                                  dialog.dismiss();
  
                                  ProductPojo lNamePojo = new ProductPojo(edittext.getText().toString());
                                  Log.d("lastNameList.size()", ""+lastNameList.size() +"  "+position);
                                  if(!albumList.isEmpty() &amp;&amp; lastNameList.size() != 0) {
                                      lastNameList.add(position, lNamePojo);
                                      Log.d("lastNameList.size()", ""+lastNameList.size());
                                  }
  
                                  adapter.notifyDataSetChanged();
                                  adapter = new ProductAdapter(MainActivity.this, albumList, lastNameList);
                                  recyclerView.setAdapter(adapter);
                              //    lName = edittext.getText().toString();
  
  
                              }
                          });
  
                          alert.setNegativeButton("Cancel", new DialogInterface.OnClickListener() {
                              public void onClick(DialogInterface dialog, int whichButton) {
                                  dialog.dismiss();
                              }
                          });
  
                          alert.show();
  
                      }
                  })
          );
  
         /* LinearLayoutManager llm = new LinearLayoutManager(this);
          llm.setOrientation(LinearLayoutManager.VERTICAL);
          recyclerView.setLayoutManager(llm);
          recyclerView.setAdapter( adapter );*/
          gestureDetector = new GestureDetectorCompat(this, new RecyclerViewDemoOnGestureListener());
          ListViewLoaderTask listViewLoaderTask = new ListViewLoaderTask();
          listViewLoaderTask.execute();
  
  
      }
  
  
      /**
       * RecyclerView item decoration - give equal margin around grid item
       */
      public class GridSpacingItemDecoration extends RecyclerView.ItemDecoration {
  
          private int spanCount;
          private int spacing;
          private boolean includeEdge;
  
          public GridSpacingItemDecoration(int spanCount, int spacing, boolean includeEdge) {
              this.spanCount = spanCount;
              this.spacing = spacing;
              this.includeEdge = includeEdge;
          }
  
          @Override
          public void getItemOffsets(Rect outRect, View view, RecyclerView parent, RecyclerView.State state) {
              int position = parent.getChildAdapterPosition(view); // item position
              int column = position % spanCount; // item column
  
              if (includeEdge) {
                  outRect.left = spacing - column * spacing / spanCount; // spacing - column * ((1f / spanCount) * spacing)
                  outRect.right = (column + 1) * spacing / spanCount; // (column + 1) * ((1f / spanCount) * spacing)
  
                  if (position &lt; spanCount) { // top edge
                      outRect.top = spacing;
                  }
                  outRect.bottom = spacing; // item bottom
              } else {
                  outRect.left = column * spacing / spanCount; // column * ((1f / spanCount) * spacing)
                  outRect.right = spacing - (column + 1) * spacing / spanCount; // spacing - (column + 1) * ((1f /    spanCount) * spacing)
                  if (position &gt;= spanCount) {
                      outRect.top = spacing; // item top
                  }
              }
          }
      }
  
      /**
       * Converting dp to pixel
       */
      private int dpToPx(int dp) {
          Resources r = getResources();
          return Math.round(TypedValue.applyDimension(TypedValue.COMPLEX_UNIT_DIP, dp, r.getDisplayMetrics()));
      }
  
      private class ListViewLoaderTask extends AsyncTask&lt;String, Void, String&gt; {
  
  
          @Override
          protected void onPreExecute() {
              super.onPreExecute();
  
              pDialog = new ProgressDialog(MainActivity.this);
              pDialog.setMessage("Loading ...");
              pDialog.setIndeterminate(false);
              pDialog.setCancelable(false);
              pDialog.show();
  
              apigetOfferList = new ApiClass();
          }
  
  
          @Override
          protected String doInBackground(String... args) {
              response = apigetOfferList.xmlFetchFunction();
              return response;
          }
  
  
          @Override
          protected void onPostExecute(String res) {
  
              Log.d("res", "" + res);
              StringReader reader = new StringReader(res);
  
              ProductXmlParser productXmlParser = new ProductXmlParser();
  
              List&lt;HashMap&lt;String, String&gt;&gt; products = null;
  
              try {
                  /** Getting the parsed data as a List construct */
                  products = productXmlParser.parse(reader);
              } catch (Exception e) {
                  Log.d("Exception", e.toString());
              }
              Log.d("products", "" + products);
  
              for (int i = 0; i &lt; products.size(); i++) {
  
                  Log.d("productThumbnail", "" + products.get(i).get("productThumbnail"));
                  ProductPojo album = new ProductPojo(products.get(i).get("productThumbnail"), products.get(i).get("productName"), products.get(i).get("categoryName"), products.get(i).get("productDescription"), products.get(i).get("numberOfRatings"), products.get(i).get("rating"), products.get(i).get("averageRatingImageURL"));
  
                  albumList.add(album);
                  lastNameList.add(album);
              }
  
  
              adapter = new ProductAdapter(MainActivity.this, albumList, lastNameList);
              adapter.notifyDataSetChanged();
  
              RecyclerView.LayoutManager mLayoutManager = new GridLayoutManager(MainActivity.this, 1);
              recyclerView.setLayoutManager(mLayoutManager);
              recyclerView.addItemDecoration(new GridSpacingItemDecoration(2, dpToPx(10), true));
              recyclerView.setItemAnimator(new DefaultItemAnimator());
              recyclerView.setAdapter(adapter);
  
  
              pDialog.dismiss();
          }
      }
  
      @Override
      public boolean onInterceptTouchEvent(RecyclerView rv, MotionEvent e) {//in
          Log.d("RecyclerView","DemoActivity"+"onInterceptTouchEvent");
          gestureDetector.onTouchEvent(e);
          return false;
      }
  
      @Override
      public void onTouchEvent(RecyclerView rv, MotionEvent e) {
  
      }
  
      @Override
      public void onRequestDisallowInterceptTouchEvent(boolean disallowIntercept) {
  
      }
  
      private void myToggleSelection(int idx) {//in
          Log.d("RecyclerView","DemoActivity"+"myToggleSelection");
          adapter.toggleSelection(idx);
          String title = getString(R.string.selected_count, adapter.getSelectedItemCount());
          actionMode.setTitle(title);
      }
  
      @TargetApi(Build.VERSION_CODES.LOLLIPOP)
  
      @Override
      public void onClick(View view) {
          if (view.getId() == R.id.container_list_item) {//in
              // item click
              Log.d("RecyclerView","DemoActivity"+"item click");
              int idx = recyclerView.getChildLayoutPosition(view);
              if (actionMode != null) {
                  myToggleSelection(idx);
                  return;
              }
          }
      }
  
      private class RecyclerViewDemoOnGestureListener extends GestureDetector.SimpleOnGestureListener {
  
          @Override
          public boolean onSingleTapConfirmed(MotionEvent e) {//in
              Log.d("RecyclerView","DemoActivity"+"onSingleTapConfirmed");
              View view = recyclerView.findChildViewUnder(e.getX(), e.getY());
              onClick(view);
              return super.onSingleTapConfirmed(e);
          }
  
          public void onLongPress(MotionEvent e) {//in
              Log.d("RecyclerView","DemoActivity"+"onLongPress");
              View view = recyclerView.findChildViewUnder(e.getX(), e.getY());
              if (actionMode != null) {
                  return;
              }
              // Start the CAB using the ActionMode.Callback defined above
              actionMode = startActionMode(MainActivity.this);
              int idx = recyclerView.getChildAdapterPosition(view);
              myToggleSelection(idx);
              super.onLongPress(e);
          }
      }
  
      @Override
      public boolean onCreateActionMode(ActionMode actionMode, Menu menu) {//in
          // Inflate a menu resource providing context menu items
          Log.d("RecyclerView","DemoActivity"+"onCreateActionMode");
          MenuInflater inflater = actionMode.getMenuInflater();
          inflater.inflate(R.menu.menu_cab_recyclerviewdemoactivity, menu);
          return true;
      }
  
      @Override
      public boolean onPrepareActionMode(ActionMode mode, Menu menu) {
          return false;
      }
  
      @Override
      public boolean onActionItemClicked(ActionMode mode, MenuItem item) {
          return false;
      }
  
      @Override
      public void onDestroyActionMode(ActionMode mode) {
  
      }
  }
  </code></pre>
  
  <p>This is my Adapter class</p>
  
  <pre><code>public class ProductAdapter extends RecyclerView.Adapter&lt;ProductAdapter.MyViewHolder&gt; {
  
      private Context mContext;
      private List&lt;ProductPojo&gt; albumList;
      String lName;
  
      private List&lt;DemoModel&gt; items;
      private SparseBooleanArray selectedItems;
  
  
      public class MyViewHolder extends RecyclerView.ViewHolder {
          public TextView lastName, cat_name, product_name, product_design, numOfRatings, rate;
          public ImageView thumbnail1, thumbnail2;
  
          public MyViewHolder(View view) {
              super(view);
  
              lastName = (TextView) view.findViewById(R.id.lastName);
              product_name = (TextView) view.findViewById(R.id.product_name);
              product_design = (TextView) view.findViewById(R.id.product_design);
              cat_name = (TextView) view.findViewById(R.id.category_name);
              rate = (TextView) view.findViewById(R.id.rate);
              numOfRatings = (TextView) view.findViewById(R.id.noOfRatings);
              thumbnail1 = (ImageView) view.findViewById(R.id.thumbnail);
              thumbnail2 = (ImageView) view.findViewById(R.id.thumbnail2);
  
  
              view.setOnClickListener(new View.OnClickListener() {
  
  
                  @Override
                  public void onClick(View v) {
  
                      Toast.makeText(itemView.getContext(), " " + getItemId(), Toast.LENGTH_SHORT).show();
  
                  }
              });
  
              view.setOnLongClickListener(new View.OnLongClickListener()
                                       {
                                           @Override
                                           public boolean onLongClick(View v)
                                           {
                                               Toast.makeText(v.getContext(), "Long Click Listerner Position is " + getAdapterPosition(), Toast.LENGTH_SHORT).show();
                                               return false;
                                           }
                                       }
              );
          }
      }
  
  
      public ProductAdapter(Context mContext, List&lt;ProductPojo&gt; albumList, ArrayList&lt;ProductPojo&gt; lName) {
          this.mContext = mContext;
          this.albumList = albumList;
          selectedItems = new SparseBooleanArray();
      }
  
      public int getSelectedItemCount() {
          Log.d("RecyclerViewDemoAdapter","getSelectedItemCount");
          return selectedItems.size();
      }
  
      @Override
      public MyViewHolder onCreateViewHolder(ViewGroup parent, int viewType) {
          View itemView = LayoutInflater.from(parent.getContext())
                  .inflate(R.layout.album_card, parent, false);
  
          return new MyViewHolder(itemView);
      }
  
      @Override
      public void onBindViewHolder(final MyViewHolder holder, int position) {
          ProductPojo album = albumList.get(position);
  
  
          holder.lastName.setText("Last Name : " + album.getlName());
          holder.product_name.setText("Product Name : " + album.getpName());
          holder.cat_name.setText("Category Name : " + album.getcName());
          holder.product_design.setText("Product Description : " + album.getpDesc());
          holder.rate.setText("Rating : " + album.getRating());
          holder.numOfRatings.setText("No.of ratings : " + album.getNoOfRatings());
  
          Drawable productDrawable = LoadImageFromProductLink(album.getpLink());
          holder.thumbnail1.setImageDrawable(productDrawable);
          // loading album cover using Glide library
          Glide.with(mContext).load(album.getpLink()).into(holder.thumbnail1);
  
          Drawable rateDrawable = LoadImageFromRateLink(album.getRateLink());
          holder.thumbnail2.setImageDrawable(rateDrawable);
          // loading album cover using Glide library
          Glide.with(mContext).load(album.getRateLink()).into(holder.thumbnail2);
  
      }
  
      private Drawable LoadImageFromProductLink(String url) {
          try {
              InputStream is = (InputStream) new URL(url).getContent();
              Drawable d = Drawable.createFromStream(is, "src name");
              return d;
          } catch (Exception e) {
              System.out.println("Exc=" + e);
              return null;
          }
      }
  
      private Drawable LoadImageFromRateLink(String url) {
          try {
              InputStream is = (InputStream) new URL(url).getContent();
              Drawable d = Drawable.createFromStream(is, "src name");
              return d;
          } catch (Exception e) {
              System.out.println("Exc=" + e);
              return null;
          }
      }
  
  
      @Override
      public int getItemCount() {
          return albumList.size();
      }
  
      @Override
      public long getItemId(int position) {
          return super.getItemId(position);
      }
  
      public void toggleSelection(int pos) {
          if (selectedItems.get(pos, false)) {
              Log.d("RecyclerViewDemoAdapter","IftoggleSelection");
              selectedItems.delete(pos);
          } else {
              Log.d("RecyclerViewDemoAdapter","ElsetoggleSelection");
              selectedItems.put(pos, true);
          }
          notifyItemChanged(pos);
      }
  }
  
  
  **And this is my row**
  
  
  
   &lt;?xml version="1.0" encoding="utf-8"?&gt;
      &lt;LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
          xmlns:card_view="http://schemas.android.com/apk/res-auto"
          android:layout_width="match_parent"
          android:layout_height="wrap_content"&gt;
  
          &lt;android.support.v7.widget.CardView
              android:id="@+id/card_view"
              android:layout_width="match_parent"
              android:layout_height="match_parent"
              android:layout_gravity="center"
              android:layout_margin="@dimen/card_margin"
              android:elevation="3dp"
              card_view:cardCornerRadius="@dimen/card_album_radius"&gt;
  
              &lt;LinearLayout
                  android:id="@+id/container_list_item"
                  android:layout_width="match_parent"
                  android:layout_height="match_parent"
                  android:background="?android:attr/selectableItemBackground"
                  android:orientation="vertical"&gt;
  
                  &lt;LinearLayout
                      android:id="@+id/first"
                      android:layout_width="match_parent"
                      android:layout_height="wrap_content"
                      android:orientation="horizontal"&gt;
  
                      &lt;ImageView
                          android:id="@+id/thumbnail"
                          android:layout_width="130dp"
                          android:layout_height="130dp"
                          android:layout_margin="5dp"
                          android:clickable="true"
                          android:padding="5dp"
                          android:scaleType="fitXY" /&gt;
  
                      &lt;LinearLayout
                          android:layout_width="match_parent"
                          android:layout_height="wrap_content"
                          android:orientation="vertical"&gt;
  
                          &lt;TextView
                              android:id="@+id/lastName"
                              android:layout_width="match_parent"
                              android:layout_height="wrap_content"
                              android:layout_marginLeft="5dp"
                              android:text="Product Name"
                              android:textColor="@color/colorPrimaryDark"
                              android:textSize="@dimen/backdrop_subtitle"
                              android:textStyle="bold"
                              android:visibility="gone" /&gt;
  
  
                          &lt;TextView
                              android:id="@+id/product_name"
                              android:layout_width="match_parent"
                              android:layout_height="wrap_content"
                              android:layout_marginLeft="5dp"
                              android:layout_marginTop="20dp"
                              android:text="Product Name"
                              android:textColor="@color/album_title"
                              android:textSize="@dimen/album_title" /&gt;
  
                          &lt;TextView
                              android:id="@+id/category_name"
                              android:layout_width="match_parent"
                              android:layout_height="wrap_content"
                              android:layout_marginLeft="5dp"
                              android:text="Category Name"
                              android:textColor="@color/album_title"
                              android:textSize="@dimen/album_title" /&gt;
                      &lt;/LinearLayout&gt;
                  &lt;/LinearLayout&gt;
  
                  &lt;TextView
                      android:id="@+id/product_design"
                      android:layout_width="match_parent"
                      android:layout_height="wrap_content"
                      android:layout_marginTop="5dp"
                      android:gravity="center"
                      android:text="Product Design"
                      android:textColor="@color/album_title"
                      android:textSize="@dimen/album_title" /&gt;
  
                  &lt;LinearLayout
                      android:id="@+id/second"
                      android:layout_width="match_parent"
                      android:layout_height="wrap_content"
                      android:layout_marginTop="5dp"
                      android:orientation="horizontal"&gt;
  
                      &lt;LinearLayout
                          android:layout_width="wrap_content"
                          android:layout_height="wrap_content"
                          android:orientation="vertical"&gt;
  
                          &lt;TextView
                              android:id="@+id/rate"
                              android:layout_width="wrap_content"
                              android:layout_height="wrap_content"
                              android:layout_marginLeft="5dp"
                              android:text="Rate"
                              android:textColor="@color/album_title"
                              android:textSize="@dimen/album_title" /&gt;
  
                          &lt;TextView
                              android:id="@+id/noOfRatings"
                              android:layout_width="wrap_content"
                              android:layout_height="wrap_content"
                              android:layout_marginLeft="5dp"
                              android:text="No. of Ratings"
                              android:textColor="@color/album_title"
                              android:textSize="@dimen/album_title" /&gt;
                      &lt;/LinearLayout&gt;
  
                      &lt;ImageView
                          android:id="@+id/thumbnail2"
                          android:layout_width="match_parent"
                          android:layout_height="match_parent"
                          android:layout_marginLeft="10dp"
                          android:layout_marginRight="10dp" /&gt;
                  &lt;/LinearLayout&gt;
  
  
              &lt;/LinearLayout&gt;
          &lt;/android.support.v7.widget.CardView&gt;
  
      &lt;/LinearLayout&gt;
  </code></pre>
  
  <p>Please help me guys..I'm waiting for ur answers..Thanks in Advance!</p>