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

Android:如何禁用 ListView?

android的ListView如何追加数据?

Android 的 ArrayAdapter - 添加字符串列表视图而不是替换

如何检查视图是不是可见(android listview)

在 listView 上加载更多项目而不是 n+2 项目