Как создать ScrollView с несколькими списками (RecyclerView) внутри, как в YAZIO?

#java #android #kotlin #android-recyclerview

#java #Android #kotlin #android-recyclerview

Вопрос:

Мне нужно создать список на неделю (7 записей), каждая запись должна содержать список других записей, как в YAZIO, как я могу этого добиться?

Скриншот

Я попытался установить 7 RecyclerView с высотой для переноса содержимого, но тогда возникает проблема: только первый отображается в полную высоту. Использование нескольких типов просмотра не подходит, поскольку я хочу использовать MaterialCardView каждый день.

В конце концов я хочу добиться такого результата, в каждой строке может быть или не быть список:

Скриншот

На данный момент я добился этого, используя ListView метод in RecyclerView и пересчитывая ListView высоту in onBindViewHolder() . Это кажется неправильным, хотя это как-то работает

Ответ №1:

Для этого вы должны использовать nestedscrollview.

Вот пример XML-кода, который может отображать 2 разных recyclerview во всю его высоту.

 <android.support.v4.widget.NestedScrollView xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:tools="http://schemas.android.com/tools"
android:layout_width="match_parent"
android:layout_height="match_parent"
xmlns:app="http://schemas.android.com/apk/res-auto"
tools:context=".com.example.thomas.EasyCount.BalanceFragment">




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



    <RelativeLayout
        android:layout_width="match_parent"
        android:layout_height="match_parent">




    <android.support.v7.widget.RecyclerView
        android:id="@ id/recycle_depenses1"
        android:layout_width="match_parent"
        android:layout_height="wrap_content"/>



        <android.support.v7.widget.RecyclerView
            android:id="@ id/recycle_pay_back"
            android:layout_width="match_parent"
            android:layout_height="wrap_content"
            android:layout_below="@id/txt_to_do"
            android:layout_alignParentStart="true"
            android:layout_marginTop="5dp"
            android:background="?android:attr/selectableItemBackground"
            />

    </RelativeLayout>


</LinearLayout>

</android.support.v4.widget.NestedScrollView>
  

Итак, вы должны использовать nestedscrollview следующим образом :

 <android.support.v4.widget.NestedScrollView xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:tools="http://schemas.android.com/tools"
android:layout_width="match_parent"
android:layout_height="match_parent"
xmlns:app="http://schemas.android.com/apk/res-auto">




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

//ALL OF YOUR CONTENT MUST BE IN THE LINEALAYOUT => Nested scroll must only have one child

</LinearLayout>

</android.support.v4.widget.NestedScrollView>