WedX - журнал о программировании и компьютерных науках

Несколько элементов RecyclerView в одном CardView

Я пытаюсь создать несколько элементов RecyclerView в каждом элементе CardView, как это делает это приложение:

введите здесь описание изображения

Я создал файл cardview_item.xml, содержащий элемент набора данных (соответствие в этом примере)

и файл cardview_title.xml, содержащий название карты (в данном примере это лига).

cardview_title.xml:

<android.support.v7.widget.CardView
xmlns:android="https://schemas.android.com/apk/res/android"
xmlns:card_view="https://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>

The RecyclerView.Adapter that I extended shows each dataset item in separate cardview:

введите здесь описание изображения

Как я могу реализовать это с помощью шаблона проектирования RecyclerView, CardView и ViewHolder?

Любая помощь будет оценена.

Спасибо


  • Я хочу сделать то же самое. Но до сих пор не могу разобраться. У вас есть решение? Пожалуйста, поделитесь со мной. 19.05.2015
  • Я нашел эту ссылку. github.com/gabrielemariotti/ cardlib/blob/master/doc/ 19.05.2015

Ответы:


1

Недавно я реализовал похожую схему.

RecyclerView с другим типом макетов или динамическим количеством элементов для каждого элемента будет иметь проблемы с производительностью, поскольку мы не можем повторно использовать представления с шаблоном ViewHolder.

Вариант 1. Используйте макет элемента ресайклера с заголовком и динамический макет, который будет увеличивать данные о совпадении. Но динамический макет нельзя использовать повторно, поэтому при прокрутке вы получите видимые задержки.

Вариант 2: Если вы можете определить максимальное количество матчей для лиги, определите карту с максимальным количеством матчей и скройте матчи в соответствии с доступными данными о матчах. Это помогло мне улучшить производительность при сравнении с одиночным динамическим макетом.

Вариант 3. Объедините варианты 1 и 2. Используйте статические элементы соответствия вместе с динамическим элементом. Используйте динамическую компоновку только при необходимости. Это сведет к минимуму количество раз, когда динамический макет будет раздуваться. Так что вы можете помочь RecyclerView в повторном использовании представлений.

Надеюсь, это поможет вам.

10.05.2015
  • можете пожалуйста выложить дизайн макета 17.02.2017
  • Новые материалы

    Как создать диаграмму градиентной кисти с помощью D3.js
    Резюме: Из этого туториала Вы узнаете, как добавить градиентную кисть к диаграмме с областями в D3.js. Мы добавим градиент к значениям SVG и применим градиент в качестве заливки к диаграмме с..

    Я хотел выучить язык программирования MVC4, но не мог выучить его раньше, потому что это выглядит сложно…
    Просто начните и учитесь самостоятельно Я хотел выучить язык программирования MVC4, но не мог выучить его раньше, потому что он кажется мне сложным, и я бросил его. Это в основном инструмент..

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

    Объяснение документов 02: BERT
    BERT представил двухступенчатую структуру обучения: предварительное обучение и тонкая настройка. Во время предварительного обучения модель обучается на неразмеченных данных с помощью..

    Как проанализировать работу вашего классификатора?
    Не всегда просто знать, какие показатели использовать С развитием глубокого обучения все больше и больше людей учатся обучать свой первый классификатор. Но как только вы закончите..

    Работа с цепями Маркова, часть 4 (Машинное обучение)
    Нелинейные цепи Маркова с агрегатором и их приложения (arXiv) Автор : Бар Лайт Аннотация: Изучаются свойства подкласса случайных процессов, называемых дискретными нелинейными цепями Маркова..

    Crazy Laravel Livewire упростил мне создание электронной коммерции (панель администратора и API) [Часть 3]
    Как вы сегодня, ребята? В этой части мы создадим CRUD для данных о продукте. Думаю, в этой части я не буду слишком много делиться теорией, но чаще буду делиться своим кодом. Потому что..


    Для любых предложений по сайту: [email protected]