Интерактивный MapView под RecyclerView - PullRequest
0 голосов
/ 01 июля 2019

Допустим, у меня есть макет, подобный следующему:

<androidx.core.widget.NestedScrollView
    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="match_parent"
    >

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

        <androidx.recyclerview.widget.RecyclerView
            android:id="@+id/recyclerView"
            android:layout_width="match_parent"
            android:layout_height="wrap_content"
            />

        <com.google.android.gms.maps.MapView
            android:id="@+id/mapView"
            android:layout_width="match_parent"
            android:layout_height="300dp"
            app:uiMapToolbar="false"
            />
    </LinearLayout>

</androidx.core.widget.NestedScrollView>

Он бы соответствовал моим потребностям, то есть

  • Отображение карты под списком таким образом, чтобыкарта отображается под последним элементом списка
  • Позволяет карте получать сенсорный ввод от пользователя, поэтому ее можно панорамировать, масштабировать и т. д. (без режима Lite)

Example

Хотя с этим я вижу две проблемы:

  • Рециркуляция отсутствует, это означает, что объем памяти, необходимый для отображения списка, увеличитсяс количеством предметов, которые находятся в списке.Я не ожидаю, что в списке будет более 200 относительно простых предметов, и после профилирования я могу сказать, что это не такая уж большая проблема, но, конечно, я бы предпочел продолжать переработку.
  • список должен иметь расширяемые элементы, что означает, что пользователь может щелкнуть по некоторому элементу, и переработчик затем добавит / удалит элементы из списка.Если в расширенной группе много элементов, измерение занимает много времени, что приводит к значительному рывку в расширяющейся анимации, что недопустимо.

Я также пытался сделать карту элементом изадаптера, но он вносит много лишних усилий при прокрутке списка и неудобен, поскольку необходимо согласовать жизненный цикл пересылки с картой с «жизненным циклом» элементов в адаптере утилизатора.

Итак, как отобразитькарта под списком без потери переработки или плавной прокрутки?

...