Doppelklicken Sie auf OnClickListener eines Recycler View Adapters

Ich versuche, einem Element einer Recycling-Ansicht eine einfache Klick-Ansicht hinzuzufügen. Aus irgendeinem Grund muss ich jedoch zweimal auf ein Element klicken, um eine Aktion auszuführen. Auf einen Klick scheint es so, als würde der Recycler View keinen Klick erkennen. Beim nächsten erkennt es jedoch das Klicken und führt eine geeignete Aktion aus.

XML:

<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"
    >

    <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">

        <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"
            />

        <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"
            />

        <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"
            />

        <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"
            />

    </RelativeLayout>

</android.support.v7.widget.CardView>

CODE

    public class InventoryItemRecyclerAdapter extends RecyclerView.Adapter<InventoryItemRecyclerAdapter.InventoryItemViewHolder>  {


        onItemClickListener mOnItemClickListener = null;

        /**
         *
         */
        public ArrayList<Product> mInventoryItemList;

        Context mContext;

        static String TAG = "InventoryItemRecyclerAdapter";

        Random random = new Random();

        // -------------------------------------------------------------------------
        // Constructor

        /**
         *
         * @param pInventoryItemList
         */
        public InventoryItemRecyclerAdapter(ArrayList<Product> 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);

        }

    }

Ich konnte anscheinend das Problem nicht finden, das dieses Problem verursacht. Kann ich dazu bitte Hilfe bekommen? Vielen Dank

Antworten auf die Frage(4)

Ihre Antwort auf die Frage