ListView 仅显示 6 个项目

Posted

技术标签:

【中文标题】ListView 仅显示 6 个项目【英文标题】:ListView only showing 6 items 【发布时间】:2021-11-07 09:27:56 【问题描述】:

外国朋友你好!

我正在尝试列出 JSON 调用的返回,但是,在 android ListView 中查看项目时,仅显示 6 个项目(最后一个,减半)。

我检查了API调用,返回了大约20个项目; 验证改造对象,它包含一个包含 20 个对象的数组;

在我的观点中,问题出在布局中,由于某种原因没有渲染所有对象。

下面是xml:

<androidx.coordinatorlayout.widget.CoordinatorLayout 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:id="@+id/activity_main"
    android:layout_
    android:background="#050505">

    <com.google.android.material.appbar.AppBarLayout
        android:id="@+id/appBarLayoutView"
        android:layout_
        android:layout_
        android:fitsSystemWindows="true">

        <com.google.android.material.appbar.CollapsingToolbarLayout
            android:id="@+id/collapseToolBarLayoutView"
            android:layout_
            android:layout_
            android:fitsSystemWindows="true"
            app:contentScrim="@android:color/secondary_text_light"
            app:expandedTitleMarginBottom="20dp"
            app:expandedTitleMarginStart="15dp"
            app:layout_scrollFlags="scroll|exitUntilCollapsed|snap">

            <ImageView
                android:id="@+id/singlePostPathView"
                android:layout_
                android:layout_
                android:adjustViewBounds="true"
                android:scaleType="centerCrop"
                app:layout_collapseMode="parallax" />

            <View
                android:layout_
                android:layout_
                android:background="@drawable/background_transp" />

            <androidx.constraintlayout.widget.ConstraintLayout
                android:layout_
                android:layout_
                android:layout_gravity="bottom"
                android:orientation="vertical">

                <TextView
                    android:id="@+id/singleTitleView"
                    android:layout_
                    android:layout_
                    android:layout_marginStart="10dp"
                    android:textColor="#FFFFFF"
                    android:text="Top 10 Morgan Freeman Movies"
                    android:textStyle="bold"
                    android:textSize="38dp"
                    android:maxLines="2"
                    app:layout_constraintTop_toTopOf="parent"
                    app:layout_constraintEnd_toStartOf="@+id/likeButtonVIew"
                    app:layout_constraintStart_toStartOf="parent" />

                <ImageView
                    android:id="@+id/userLikesIconView"
                    android:layout_
                    android:layout_
                    android:layout_marginTop="15dp"
                    android:layout_marginStart="10dp"
                    android:layout_marginBottom="15dp"
                    android:src="@drawable/ic_like"
                    app:layout_constraintStart_toStartOf="parent"
                    app:layout_constraintBottom_toBottomOf="parent"
                    app:layout_constraintTop_toBottomOf="@+id/singleTitleView" />

                <ImageView
                    android:id="@+id/likeButtonVIew"
                    android:layout_
                    android:layout_
                    android:layout_marginEnd="10dp"
                    android:layout_marginTop="10dp"
                    android:src="@drawable/ic_like_btn"
                    app:layout_constraintEnd_toEndOf="parent"
                    app:layout_constraintTop_toTopOf="parent"/>

                <TextView
                    android:id="@+id/userRateView"
                    android:layout_
                    android:layout_
                    android:text="719 Curtidas"
                    android:layout_marginStart="5dp"
                    android:textColor="#FFFFFF"
                    android:textSize="16sp"
                    app:layout_constraintStart_toEndOf="@+id/userLikesIconView"
                    app:layout_constraintTop_toTopOf="@+id/userLikesIconView"
                    app:layout_constraintBottom_toBottomOf="@+id/userLikesIconView"/>

                <ImageView
                    android:id="@+id/watchesIconVIew"
                    android:layout_
                    android:layout_
                    android:layout_marginStart="20dp"
                    android:src="@drawable/ic_rd"
                    app:layout_constraintTop_toTopOf="@+id/userLikesIconView"
                    app:layout_constraintBottom_toBottomOf="@+id/userLikesIconView"
                    app:layout_constraintStart_toEndOf="@+id/userRateView"/>

                <TextView
                    android:id="@+id/watchesVIew"
                    android:layout_
                    android:layout_
                    android:layout_below="@+id/singleTitleView"
                    android:layout_marginStart="5dp"
                    android:text="0 de 10 Assistidos"
                    android:textColor="#FFFFFF"
                    android:textSize="16sp"
                    app:layout_constraintStart_toEndOf="@+id/watchesIconVIew"
                    app:layout_constraintBottom_toBottomOf="@+id/userLikesIconView"
                    app:layout_constraintTop_toTopOf="@+id/userLikesIconView"/>

            </androidx.constraintlayout.widget.ConstraintLayout>
        </com.google.android.material.appbar.CollapsingToolbarLayout>
        </com.google.android.material.appbar.AppBarLayout>

    <androidx.core.widget.NestedScrollView
        android:layout_
        android:layout_
        android:fillViewport="true"
        android:layout_below="@+id/appBarLayoutView"
        app:layout_behavior="@string/appbar_scrolling_view_behavior">

        <ListView
            android:id="@+id/similar_list"
            android:layout_
            android:layout_
            tools:listitem="@layout/items_similar" />

    </androidx.core.widget.NestedScrollView>
</androidx.coordinatorlayout.widget.CoordinatorLayout>

为了实现目标,我需要设置什么属性吗?

【问题讨论】:

这不是一个完全有效的布局。看起来它应该被包裹在一个 ConstraintLayout 中,从你的共享布局中被忽略,你能分享整个布局,还有你期望的图片看到 您能否提供您的 MainActivity、列表项和完整的布局,如 @Zain 所写。然后我们可以进一步调查。干杯! 非常抱歉!我没有注意到编辑器取下了显示布局根的顶部。我会解决的。 【参考方案1】:

首先不怪你,但你的layout 绝对应该以更高级的方式设置。在性能和逻辑方面可以做得更多。 检查您的 rootView 是否为 CoordinatorLayoutNestedScrollView 组合以在整个屏幕内滚动。

请注意,切勿ScrollViewListViewRecyclerView 一起使用 - 再次 - 绝不

我的参考:Android Developer

要查看我需要添加的任何内容,请添加CoordinatorLayout。我希望你的 rootView 不是AppBarLayout

另外一点,让您的ListView 可滚动。如果不是这样解释,为什么ListItems 在 6 个项目后被删除。这也是由Layout 引起的,ListView 还没有机会滚动。顺便说一句,它应该是默认可滚动的。

最后但并非最不重要的一点是,检查您的列表是否有限或看起来像这样:

@Override
public int getCount() 
return yourArrayList.length;

【讨论】:

我的代码很奇怪。我现在已经更新了它,它确实应该是(缺少根布局,对不起) 正如我所说:) rootView 不存在。我不得不自己添加它。随意勾选这个作为正确答案。很高兴它有效 :) 干杯!

以上是关于ListView 仅显示 6 个项目的主要内容,如果未能解决你的问题,请参考以下文章

ListView添加节点

Flutter - 如何在 Listview 构建器顶部添加项目?

ScrollView嵌套listView,显示头像错乱

ArrayList 适配器(用于 ListView)仅显示第一个添加的项目

listview.setSelection()

更新 ListView 中的特定项目