android如何使用listview而不是scrollview
Posted
技术标签:
【中文标题】android如何使用listview而不是scrollview【英文标题】:android how to use listview instead of scrollview 【发布时间】:2021-05-23 04:52:50 【问题描述】:在我的应用程序主页中,我使用回收站视图创建了 10 个列表。列表的项目数量有限。 和顶部的图像滑块和 2 个简单的图像视图。每个回收器视图都在一个片段内,我在主要活动中初始化片段,然后将片段添加到嵌套滚动视图内的 framelayout 类型的容器中。现在我在类似的应用程序中看到向下滚动时正在创建视图,我认为应用程序可能正在使用列表视图,但在我的应用程序中,所有视图都是一次创建的,我担心这会影响我的应用程序首页加载时间,因此对应用性能。 我不知道如何使用包含不同类型视图的列表视图,如我的。 这是我的主要活动:
<RelativeLayout
xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:app="http://schemas.android.com/apk/res-auto"
xmlns:tools="http://schemas.android.com/tools"
android:layout_
android:layout_
tools:context=".MainActivity"
android:animateLayoutChanges="true"
android:id="@+id/submaincontainer"
>
<androidx.appcompat.widget.Toolbar
android:id="@+id/toolbar"
android:layout_
android:layout_
android:background="#f8f8f8"
app:popupTheme="@style/AppTheme.PopupOverlay"
android:layoutDirection="rtl">
<LinearLayout
android:layout_
android:layout_
android:orientation="horizontal">
<RelativeLayout
android:id="@+id/searchlay"
android:layout_
android:layout_weight="1"
android:layout_
android:background="@drawable/simplebackles-s-roundtool"
android:layout_margin="4dp"
>
<ImageView
android:id="@+id/search"
android:layout_
android:layout_
android:src="@drawable/search"
android:layout_centerVertical="true"
android:layout_marginStart="10dp"
/>
<TextView
android:layout_toEndOf="@id/search"
android:id="@+id/b1"
android:layout_
android:layout_
android:text="جستجو در "
android:layout_centerVertical="true"
android:layout_marginEnd="-20dp"
android:layout_marginStart="10dp"/>
<ImageView
android:layout_toLeftOf="@id/b1"
android:layout_centerVertical="true"
android:src="@drawable/sinbadred"
android:layout_
android:layout_
android:padding="4dp"
android:layout_marginTop="2dp"
/>
</RelativeLayout>
<ProgressBar
android:id="@+id/toolbarprog"
android:layout_
android:layout_
android:indeterminateDrawable="@drawable/progress"
android:layout_alignParentEnd="true"
android:visibility="gone" />
</LinearLayout>
</androidx.appcompat.widget.Toolbar>
<androidx.core.widget.NestedScrollView
android:layout_
android:layout_
android:layout_above="@+id/navigator"
android:layout_below="@+id/toolbar"
>
<LinearLayout
android:layout_
android:layout_
android:orientation="vertical"
>
<androidx.cardview.widget.CardView
android:id="@+id/slidercontainer"
android:layout_
android:layout_
android:layout_marginBottom="10dp"
android:layout_marginEnd="10dp"
android:layout_marginStart="10dp"
app:cardCornerRadius="6dp">
<com.denzcoskun.imageslider.ImageSlider
android:id="@+id/image_slider"
android:layout_
android:layout_
app:iss_auto_cycle="true"
app:iss_delay="0"
app:iss_period="2500" />
</androidx.cardview.widget.CardView>
<FrameLayout
android:id="@+id/containerhorizsubgroup"
android:layout_
android:layout_
android:padding="10dp"/>
<FrameLayout
android:id="@+id/containerdiscount"
android:layout_
android:layout_ />
<FrameLayout
android:id="@+id/containeruserseensubg"
android:layout_
android:layout_ />
<FrameLayout
android:id="@+id/containernews"
android:layout_
android:layout_
/>
<ImageView
android:id="@+id/poster0"
android:layout_
android:layout_
android:layout_marginTop="20dp"
android:layout_marginStart="15dp"
android:layout_marginEnd="15dp"/>
<FrameLayout
android:id="@+id/userseencontainer"
android:layout_
android:layout_ />
<FrameLayout
android:id="@+id/offercontainer"
android:layout_
android:layout_
android:layout_marginTop="15dp"
/>
<FrameLayout
android:id="@+id/containercustomsubgroup"
android:layout_
android:layout_ />
<FrameLayout
android:id="@+id/mostvisitedcontainer"
android:layout_
android:layout_
android:layout_marginTop="15dp"
/>
<FrameLayout
android:id="@+id/userseenbygroupcontainer"
android:layout_
android:layout_ />
<ImageView
android:id="@+id/poster1"
android:layout_marginTop="20dp"
android:layout_marginBottom="10dp"
android:layout_
android:layout_
android:layout_marginStart="15dp"
android:layout_marginEnd="15dp"/>
<FrameLayout
android:id="@+id/mostSoldcontainer"
android:layout_
android:layout_ />
<FrameLayout
android:id="@+id/recentcontainer"
android:layout_
android:layout_
android:layout_marginTop="15dp"/>
</LinearLayout>
</androidx.core.widget.NestedScrollView>
<com.google.android.material.bottomnavigation.BottomNavigationView
android:id="@+id/navigator"
android:layout_
android:layout_
android:layout_alignParentBottom="true"
android:background="#f8f8f8"
android:layoutDirection="rtl"
app:itemIconTint="@drawable/tab_color_selector"
app:itemTextColor="@drawable/tab_color_selector"
app:labelVisibilityMode="labeled"
app:menu="@menu/bottomnavmenu" />
我将包含回收站视图的片段加载到这些框架布局中 我想知道如何使用列表视图构建它,以便所有视图不是一次创建而是通过滚动创建的。 任何适当的帮助。 我在底部发布了一些我的应用程序主视图。 谢谢
【问题讨论】:
Epoxy 是答案 【参考方案1】:您可以将回收器视图与视图类型一起使用,而不是片段 喜欢 图像滑块的 ViewHolder 图像视图的视图支架 水平列表的视图持有人 例如 https://medium.com/better-programming/create-heterogeneous-views-using-recyclerview-in-android-e2ad626686f6
【讨论】:
以上是关于android如何使用listview而不是scrollview的主要内容,如果未能解决你的问题,请参考以下文章
android中的Listview设置刷新时,Item是当前的Item,而不是第一个Item