title: Double Click OnClickListener of a Recycler View Adapter
body: <p>I am trying to add a simple Click View to an item of a recycler view, but for some reason I have to click on an item twice instead of once to perform an action. On single click it seems like that recycler View does not detect a click. On the next one however it detects the click and performs a suitable action.</p>
  
  <p>XML : </p>
  
  
  
  <pre><code>&lt;android.support.v7.widget.CardView
      xmlns:android="http://schemas.android.com/apk/res/android"
      android:id="@+id/cardView"
      android:layout_width="match_parent"
      android:layout_height="wrap_content"
      &gt;
  
      &lt;RelativeLayout
          android:id="@+id/rlContainer"
          android:layout_width="match_parent"
          android:layout_height="wrap_content"
          android:clickable="true"
          android:focusable="true"
          android:focusableInTouchMode="true"
          android:background="@drawable/selector_inventory_recycler_item"
          android:padding="16dp"&gt;
  
          &lt;ImageView
              android:id="@+id/item_photo"
              android:layout_width="100dp"
              android:layout_height="100dp"
              android:layout_alignParentLeft="true"
              android:layout_alignParentTop="true"
              android:layout_marginRight="16dp"
              /&gt;
  
          &lt;TextView
              android:id="@+id/txtItemName"
              android:layout_width="wrap_content"
              android:layout_height="wrap_content"
              android:layout_alignParentTop="true"
              android:layout_toRightOf="@+id/item_photo"
              android:textSize="16sp"
              /&gt;
  
          &lt;TextView
              android:id="@+id/txtItemQuantity"
              android:layout_width="wrap_content"
              android:layout_height="wrap_content"
              android:layout_below="@+id/txtItemName"
  
              android:layout_toRightOf="@+id/item_photo"
              /&gt;
  
          &lt;TextView
              android:id="@+id/txtItemPrice"
              android:layout_width="wrap_content"
              android:layout_height="wrap_content"
              android:layout_below="@+id/txtItemQuantity"
              android:layout_toRightOf="@+id/item_photo"
              /&gt;
  
      &lt;/RelativeLayout&gt;
  
  &lt;/android.support.v7.widget.CardView&gt;
  </code></pre>
  
  <p>CODE:</p>
  
  <pre><code>    public class InventoryItemRecyclerAdapter extends RecyclerView.Adapter&lt;InventoryItemRecyclerAdapter.InventoryItemViewHolder&gt;  {
  
  
          onItemClickListener mOnItemClickListener = null;
  
          /**
           *
           */
          public ArrayList&lt;Product&gt; mInventoryItemList;
  
          Context mContext;
  
          static String TAG = "InventoryItemRecyclerAdapter";
  
          Random random = new Random();
  
          // -------------------------------------------------------------------------
          // Constructor
  
          /**
           *
           * @param pInventoryItemList
           */
          public InventoryItemRecyclerAdapter(ArrayList&lt;Product&gt; pInventoryItemList) {
              mInventoryItemList = pInventoryItemList;
          }
  
          // ---------------------------------------------------------------------
  
    @Override
      public InventoryItemViewHolder onCreateViewHolder(ViewGroup parent, int viewType) {
  
          mContext = parent.getContext();
  
          // Inflate the Layout for an item
          View v = LayoutInflater.from(parent.getContext())
                  .inflate(R.layout.item_inventory_recycler_adapter, parent, false);
  
          // Instantiate ViewHolder
          InventoryItemViewHolder inventoryItemViewHolder = new InventoryItemViewHolder(v);
  
          return inventoryItemViewHolder;
      }
  
          @Override
          public void onBindViewHolder(InventoryItemViewHolder holder, int position) {
  
             ...
          }
  
          // ---------------------------------------------------------------------------------------------
  
          /**
           * Returns the total number of items in the data set hold by the adapter.
           *
           * @return The total number of items in this adapter.
           */
          @Override
          public int getItemCount() {
              return mInventoryItemList.size();
          }
  
          // ---------------------------------------------------------------------------------------------
          // View Holder
  
          /**
           * RecyclerView
           */
          public class InventoryItemViewHolder extends RecyclerView.ViewHolder implements View.OnClickListener {
  
              // -----------------------------------------------------------------------------------------
              // Vars
  
              public CardView cardView;
  
              public RelativeLayout uiContainer;
  
              public TextView productName;
              public TextView productPrice;
              public TextView productQuantity;
  
              public ImageView productImage;
  
              public Product mProduct;
  
              // -----------------------------------------------------------------------------------------
              // Constructor
  
              public InventoryItemViewHolder(View itemView) {
                  super(itemView);
  
                  cardView        = (CardView) itemView.findViewById(R.id.cardView);
                  productName     = (TextView) itemView.findViewById(R.id.txtItemName);
                  productImage    = (ImageView) itemView.findViewById(R.id.item_photo);
                  productPrice    = (TextView) itemView.findViewById(R.id.txtItemPrice);
                  productQuantity = (TextView) itemView.findViewById(R.id.txtItemQuantity);
                  uiContainer     = (RelativeLayout) itemView.findViewById(R.id.rlContainer);
  
                  uiContainer.setOnClickListener(this);
  
  
              }
  
              // -----------------------------------------------------------------------------------------
  
              /**
               * Called when a view has been clicked.
               *
               * @param v The view that was clicked.
               */
              @Override
              public void onClick(View v) {
  
                  Log.e("InventoryItemRecyclerAdapter", "onItemClick");
  
                  // Throw a null pointer exception if this is null
                  if (mOnItemClickListener == null) {
                      throw new NullPointerException("mOnItemClickListener is null in InventoryItemRecyclerAdapter");
                  }
  
                  // Delegate to its caller. Let it handle the work
                  mOnItemClickListener.onRecyclerViewItemClick(this);
  
              }
  
              // -------------------------------------------------------------
  
          }
  
  
          // -----------------------------------------------------------------
          /**
           *  Interface for RecyclerView
           */
          public interface onItemClickListener {
  
              /**
               *
               * @param pItemViewHolder
               */
              public void onRecyclerViewItemClick(InventoryItemRecyclerAdapter.InventoryItemViewHolder pItemViewHolder);
  
          }
  
      }
  </code></pre>
  
  <p>I couldn't seem to find the problem thats causing this issue. Can I get any help on this please. Thanks.</p>