Sourabh Pal
Sourabh Pal

Reputation: 11

Horizontal recycler view on top of vertical recycler veiw

        This is the individual item's layout file

    <?xml version="1.0" encoding="utf-8"?>
    <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
        xmlns:tools="http://schemas.android.com/tools"
        xmlns:card_view="http://schemas.android.com/apk/res-auto"
        android:id="@+id/card_view_item"
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:orientation="vertical"
        android:background="#DDE6EC"
        tools:context="com.example.personal.newsfeeder.MainActivity">

        <android.support.v7.widget.RecyclerView xmlns:android="http://schemas.android.com/apk/res/android"
            android:id="@+id/section_recycler_view"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            />

        <android.support.v7.widget.CardView
            xmlns:card_view="http://schemas.android.com/tools"
            android:layout_height="wrap_content"
            android:layout_width="match_parent"
            android:layout_marginTop="16dp"

            android:id="@+id/card_view"
            android:layout_gravity="center"
            card_view:cardCornerRadius="8dp"
            card_view:cardElevation="10dp"
            >

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

                <RelativeLayout
                    android:id="@+id/avatar_section"
                    android:layout_width="match_parent"
                    android:layout_height="72dp"
                    android:padding="16dp">

                    <TextView
                        android:layout_width="wrap_content"
                        android:layout_height="wrap_content"
                        android:gravity="center"
                        android:background="@drawable/circular_image"
                        android:id="@+id/avatar_image"
                        />
                    <TextView
                        android:id="@+id/avatar_name"
                        android:layout_width="wrap_content"
                        android:layout_height="wrap_content"
                        android:layout_toRightOf="@id/avatar_image"
                        android:layout_marginLeft="4dp"
                        tools:text="Title"
                        android:textStyle="bold"
                        android:textAppearance="?android:textAppearanceMedium"
                        android:textColor="#616161"/>
                    <TextView
                        android:layout_width="wrap_content"
                        android:layout_height="wrap_content"
                        android:layout_below="@id/avatar_name"
                        android:layout_toRightOf="@id/avatar_image"
                        android:layout_marginLeft="4dp"
                        tools:text="Subhead"
                        android:id="@+id/avatar_subhead"
                        android:textAppearance="?android:textAppearanceSmall"
                        android:textColor="#616161"/>


                </RelativeLayout>


                    <ImageView
                        android:layout_height="wrap_content"
                        android:layout_width="match_parent"
                        tools:src="@drawable/placeholder"
                        android:id="@+id/image_view"
                        android:scaleType="centerCrop"/>


                    <TextView
                        android:layout_width="wrap_content"
                        android:layout_height="wrap_content"
                        android:paddingTop="16dp"
                        android:text="Keep Moving"
                        android:paddingLeft="16dp"
                        android:textAppearance="?android:textAppearanceMedium"
                        android:textAllCaps="true"
                        android:textStyle="bold"
                        android:id="@+id/the_title"
                        />f

                <TextView
                    android:id="@+id/the_three_lines"
                    android:layout_width="wrap_content"
                    android:layout_height="wrap_content"
                    android:maxLines="3"
                    android:padding="16dp"
                    tools:text="@string/description"
                    android:ellipsize="end"
                    android:lineSpacingMultiplier="1.2"/>
                <LinearLayout
                    android:layout_width="match_parent"
                    android:layout_height="wrap_content"
                    android:orientation="horizontal"
                    >
                    <ImageView
                        android:id="@+id/heart_image"
                        android:layout_width="wrap_content"
                        android:layout_height="wrap_content"
                        android:src="@drawable/heart"
                        android:padding="8dp"
                        />
                    <ImageView
                        android:id="@+id/bookmark_image"
                        android:layout_width="wrap_content"
                        android:layout_height="wrap_content"
                        android:src="@drawable/bookmark"
                        android:padding="8dp"
                        />

                </LinearLayout>

            </LinearLayout>



        enter code here
        </android.support.v7.widget.CardView>


    </LinearLayout>

This is the recycler's Adapter code
  @Override
    public void onBindViewHolder(ArticleViewHolder holder, int position) {
        holder.mAvatarView.setText(mArticles.get(position).getmAvatarInitial());
        holder.mAvatarNameView.setText(mArticles.get(position).getmAvatarName());
        holder.mAvatarSubView.setText(mArticles.get(position).getmAvatarSub());
        mRowIndex++;
        if (position == 0) {

            holder.horizontalList.setLayoutManager(new LinearLayoutManager(holder.context, LinearLayoutManager.HORIZONTAL, false));
            holder.horizontalAdapter = new SectionRVAdapter(holder.context);
            holder.horizontalList.setAdapter(holder.horizontalAdapter);
            holder.horizontalAdapter.setDataset(holder.sections);

        }

        String imageUrl = mArticles.get(position).getmImageURL();

        Picasso.with(mContext)
                .load(imageUrl)
                .placeholder(R.drawable.placeholder)
                .error(R.drawable.error_img)
                .into(holder.mImageView);
        holder.mTheTitleView.setText(mArticles.get(position).getmTheTitle());

        holder.mTheThreeLinesView.setText(mArticles.get(position).getmTheThreeLines());


    }

Now i want a horizontal recycler view over the vertical recycler view. But at present the horizontal recycler view is repeated after every 5 cardviews.

I am checking if position is equal to 0 in my onBindViewHolder method but still why is it created multiple times?

I hope i made my question clear.

Upvotes: 0

Views: 165

Answers (1)

Pooja Patil
Pooja Patil

Reputation: 343

holder.setIsRecyclable(false);

Add this line in public void onBindViewHolder(ArticleViewHolder holder, int position) {}

I hope this will help you

Upvotes: 2

Related Questions