Допустим, у меня есть макет, подобный следующему:
<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)
Хотя с этим я вижу две проблемы:
- Рециркуляция отсутствует, это означает, что объем памяти, необходимый для отображения списка, увеличитсяс количеством предметов, которые находятся в списке.Я не ожидаю, что в списке будет более 200 относительно простых предметов, и после профилирования я могу сказать, что это не такая уж большая проблема, но, конечно, я бы предпочел продолжать переработку.
- список должен иметь расширяемые элементы, что означает, что пользователь может щелкнуть по некоторому элементу, и переработчик затем добавит / удалит элементы из списка.Если в расширенной группе много элементов, измерение занимает много времени, что приводит к значительному рывку в расширяющейся анимации, что недопустимо.
Я также пытался сделать карту элементом изадаптера, но он вносит много лишних усилий при прокрутке списка и неудобен, поскольку необходимо согласовать жизненный цикл пересылки с картой с «жизненным циклом» элементов в адаптере утилизатора.
Итак, как отобразитькарта под списком без потери переработки или плавной прокрутки?