一个CardView中的多个RecyclerView项目

时间:2015-05-10 13:19:45

标签: android android-recyclerview android-cardview android-viewholder

我尝试在每个CardView项目中创建多个RecyclerView项目,就像这个应用程序一样:

enter image description here

我创建了一个包含数据集项的cardview_item.xml(本例中的匹配项)

以及包含卡片标题的cardview_title.xml(本例中的联盟)。

cardview_title.xml:

<android.support.v7.widget.CardView
xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:card_view="http://schemas.android.com/apk/res-auto"
android:layout_width="fill_parent"
android:layout_height="88dp"
card_view:cardCornerRadius="1dp"
android:layout_margin="4dp">

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

    <TextView
        android:id="@+id/amount_title"
        android:layout_height="wrap_content"
        android:layout_width="wrap_content"
        android:layout_marginEnd="5dp"
        android:layout_marginTop="5dp"
        android:gravity="center"
        android:layout_alignParentEnd="true"
        android:padding="5dp"
        android:text="@string/amount"
        android:textAllCaps="true"
        android:textSize="20sp"
        android:textColor="@android:color/black"/>

    .
    .
    .

    <TextView
        android:id="@+id/week_title"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_alignBottom="@id/amount_title"
        android:layout_alignTop="@id/amount_title"
        android:layout_alignParentStart="true"
        android:layout_marginStart="5dp"
        android:gravity="center"
        android:padding="5dp"
        android:textAllCaps="true"
        android:text="@string/week"
        android:textColor="@android:color/black"
        android:textSize="20sp" />

    <View
        android:id="@+id/lineSeparator"
        android:layout_width="fill_parent"
        android:layout_height="1dp"
        android:layout_below="@id/week_title"
        android:background="@android:color/darker_gray"/>

    <include
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        layout="@layout/cardview_item"
        android:layout_below="@+id/week_title"
        android:layout_centerHorizontal="true" />

</RelativeLayout>

我扩展的RecyclerView.Adapter在单独的cardview中显示每个数据集项目:

enter image description here

如何使用RecyclerView,CardView和ViewHolder设计模式实现这一点?

任何帮助将不胜感激。

由于

1 个答案:

答案 0 :(得分:1)

我最近实施了类似的模式。

对于每个项目具有不同类型的布局或动态项目数量的RecyclerView将存在性能问题,因为我们无法使用ViewHolder模式重用视图。

选项1:使用带有标题和动态布局的回收商项目布局,这将夸大给定的匹配详细信息。但动态布局无法重复使用,因此滚动时会出现明显滞后。

选项2:如果您可以决定联赛的最大匹配数,则定义具有最大匹配数的卡,并根据可用的匹配数据隐藏匹配。当您将其与单个动态布局进行比较时,这有助于我提高性能。

选项3:组合选项1和2.使用静态匹配项和动态项。仅在需要时使用动态布局。这将最大限度地减少动态布局膨胀的次数。这样您就可以帮助RecyclerView重用视图。

希望它对你有所帮助。