Я создаю небольшое приложение для точек продаж для друга. Ей нужно приложение на планшете с 40 кнопками добавления (и 40 кнопками удаления). Каждая кнопка представляет продукт и имеет свою метку. На левой стороне экрана должно быть 20 вертикальных кнопок, а на правой стороне также должно быть 20 вертикальных кнопок. Все кнопки должны помещаться на одном экране.
Я попытался использовать два recyclerview рядом друг с другом - с фиксированным размером экрана - с одним и тем же адаптером и пользовательскими представлениями внутри каждого recyclerview, но это вызвало много задержек, и в моем эмуляторе я получил предупреждения о том, что кадры были пропущены. Думаю, это из-за большого количества просмотров внутри recyclerview (80+ кнопок).
Затем я попробовал 1 recyclerview с двумя продуктами на 1 горизонтальной строке, но это, похоже, не улучшило производительность и усложнило мое приложение (потому что мне нужно установить два продукта на строку). Я также пытался использовать ListView, потому что я думал, что у него меньше накладных расходов, но он продолжал отставать, и я / хореограф: пропустил 44 кадра! Приложение может выполнять слишком много работы в своем основном потоке.
Единственный способ, при котором кадры не пропускаются, — это когда я жестко запрограммирую 80 кнопок, но это не оптимальное решение, поскольку количество товаров со временем будет меняться. Когда продукты меняются (сохраняются в csv), количество кнопок также должно обновляться без изменения кода.
Есть ли способ создать представление с 80 кнопками, которое менее требовательно к системе? В идеале я бы ввел 1 список продуктов в 1 представление.
Пример 1 продукта:
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:orientation="horizontal"
android:paddingHorizontal="10dip"
android:paddingTop="1dp"
android:paddingBottom="4dp">
<Button
android:id="@+id/add_button"
android:layout_width="200dp"
android:layout_height="44dp"
android:minHeight="1dip"
android:text="BUT L"
android:textSize="22sp" />
<TextView
android:id="@+id/amount"
android:layout_width="80dp"
android:layout_height="44dp"
android:paddingHorizontal="20dip"
android:layout_gravity="center"
android:textAlignment="center"
android:text="0"
android:textSize="22sp" />
<Button
android:id="@+id/delete_button"
android:layout_width="60dp"
android:layout_height="44dp"
android:minWidth="1dip"
android:minHeight="1dip"
android:text="-"
android:textSize="22sp" />
</LinearLayout>