Search code examples
androidandroid-recyclerviewfirebaseui

Opening another activity using Firebase UI RecyclerView


I looked at several answers to this topic but none produced the desired result I want to have. I have an RecyclerView using the Firebase UI for RecyclerView where I want to add a OnClick event. So the user clicks on an item in the RecyclerView and gets to another activity. For this I am using an intent in my adapter class but somehow it is not working, if I click on an item of the RecyclerView nothings happens, it should open the next activity but it doesn't. Is there another way to open another activity?

Here is my adapter class:

class UserHolder extends RecyclerView.ViewHolder {

        TextView textViewUsername;

        public UserHolder(@NonNull View itemView) {
            super(itemView);

            textViewUsername = itemView.findViewById(R.id.player_name_search);

            itemView.setOnClickListener(new View.OnClickListener() {
                @Override
                public void onClick(View v) {
                    int position = getAdapterPosition();
                    if (position != RecyclerView.NO_POSITION && listener != null){
                        listener.onItemClick(getSnapshots().getSnapshot(position),(position));
                        Intent i = new Intent (itemView.getContext(), FriendRequest.class);
                        itemView.getContext().startActivity(i);
                    }

                }
            });
        }
    }

    public interface OnItemClickListener{
        void onItemClick (DocumentSnapshot documentSnapshot, int position);
    }

    public void setOnItemClickListener(OnItemClickListener listener){
        this.listener = listener;
    }

Here is the activity where I use the onItemClickListener:

userAdapter.setOnItemClickListener(new UserAdapter.OnItemClickListener() {
            @Override
            public void onItemClick(DocumentSnapshot documentSnapshot, int position) {
                Intent i = new Intent(PlayerSearch.this, FriendRequest.class);
                startActivity(i);
            }
        });

Here is my list_item layout:

<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:app="http://schemas.android.com/apk/res-auto"
    android:orientation="vertical"
    android:layout_width="match_parent"
    android:layout_height="wrap_content"
    android:layout_margin="8dp">

    <androidx.cardview.widget.CardView
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        app:cardElevation="5dp"
        app:cardCornerRadius="20dp"
        style="@style/CardViewWidgets"
        android:clickable="true"
        android:focusable="true">

        <LinearLayout
            android:layout_width="match_parent"
            android:layout_height="wrap_content"
            android:orientation="vertical">

            <ImageView
                android:id="@+id/picture_prize_recycler_view"
                android:layout_width="match_parent"
                android:layout_height="200dp"
                android:scaleType="centerCrop"
                app:srcCompat="@mipmap/suezkanal"/>

            <TextView
                android:id="@+id/listitem_text_view_prize_game"
                android:layout_width="match_parent"
                android:layout_height="wrap_content"
                android:textSize="@dimen/text_normal_size"
                android:text="Some text"
                android:layout_margin="8dp"
                style="@style/TextView"/>

        </LinearLayout>

    </androidx.cardview.widget.CardView>

</LinearLayout>

Solution

  • Thanks to the answer of @Mike M. this problem has been resolved. I had to delete my outer LinearLayout of the ListItem:

    <androidx.cardview.widget.CardView
            xmlns:android="http://schemas.android.com/apk/res/android"
            xmlns:app="http://schemas.android.com/apk/res-auto"
            android:layout_width="match_parent"
            android:layout_height="wrap_content"
            app:cardElevation="5dp"
            app:cardCornerRadius="20dp"
            style="@style/CardViewWidgets"
            android:clickable="true"
            android:focusable="true"
            android:layout_margin="8dp">
    
            <LinearLayout
                android:layout_width="match_parent"
                android:layout_height="wrap_content"
                android:orientation="vertical">
    
                <ImageView
                    android:id="@+id/picture_prize_recycler_view"
                    android:layout_width="match_parent"
                    android:layout_height="200dp"
                    android:scaleType="centerCrop"
                    app:srcCompat="@mipmap/suezkanal"/>
    
                <TextView
                    android:id="@+id/listitem_text_view_prize_game"
                    android:layout_width="match_parent"
                    android:layout_height="wrap_content"
                    android:textSize="@dimen/text_normal_size"
                    android:text="Some text"
                    android:layout_margin="8dp"
                    style="@style/TextView"/>
    
            </LinearLayout>
    
        </androidx.cardview.widget.CardView>