#android #android-studio #android-layout #android-recyclerview
Вопрос:
Я пытался отобразить список элементов, например 30 items
, с помощью диспетчера компоновки flex в представлении recycler. Элементы отображаются так, как и ожидалось. Но я должен показать первые 10 элементов в представлении переработчика , а затем у меня есть кнопка с именем LoadMore
, при нажатии кнопки «Загрузить больше» я должен показать следующие 20 элементов в представлении переработчика. поэтому при добавлении каждого элемента в представление переработчика высота представления переработчика должна устанавливаться динамически . Как мы можем этого достичь?
пример XML-макета:
<?xml version="1.0" encoding="utf-8"?>
<RelativeLayout 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="wrap_content"
android:background="@drawable/filter_bg_round_corner">
<LinearLayout
android:id="@ id/varietal_root_lyt"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_margin="20dp"
android:orientation="vertical"
android:visibility="visible">
<androidx.appcompat.widget.SearchView
android:id="@ id/region_Search"
android:layout_width="match_parent"
android:layout_height="40dp"
android:background="@drawable/filter_search_bar_bg_lyt"
app:iconifiedByDefault="false"
app:queryHint="Search">
</androidx.appcompat.widget.SearchView>
<RelativeLayout
android:layout_width="match_parent"
android:layout_height="0dp">
<androidx.core.widget.NestedScrollView
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_margin="5dp"
android:isScrollContainer="false">
<androidx.recyclerview.widget.RecyclerView
android:id="@ id/filter_region_Recycler_lyt"
android:layout_width="match_parent"
android:layout_height="wrap_content">
</androidx.recyclerview.widget.RecyclerView>
</androidx.core.widget.NestedScrollView>
</RelativeLayout>
<TextView
android:id="@ id/filter_region_show_more_text"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_marginLeft="14dp"
android:layout_marginTop="30dp"
android:text="Show More"
android:textAllCaps="false"
android:textColor="#323c55"
android:textSize="13sp"
android:textStyle="bold">
</TextView>
</LinearLayout>
</RelativeLayout>
пример кода 2 для моего класса фрагментов, устанавливающего значения для адаптера:
filterRegionAdapter = new FilterRegionAdapter(getContext(), regionArrayList);
filterRegionAdapter.setOnFilterRegionItemClickListener(onFilterRegionItemClickListener);
FlexboxLayoutManager layoutManager = new FlexboxLayoutManager(getContext());
layoutManager.setFlexDirection(FlexDirection.ROW);
layoutManager.setJustifyContent(JustifyContent.FLEX_START);
layoutManager.setAlignItems(AlignItems.CENTER);
RelativeLayout.LayoutParams lp =
new RelativeLayout.LayoutParams(RelativeLayout.LayoutParams.MATCH_PARENT, 100);
regionRecycler.setLayoutParams(lp);
regionRecycler.setLayoutManager(layoutManager);
regionRecycler.setAdapter(filterRegionAdapter);