如何在不将 ActivityScreen 划分为 android 的情况下实现多个列表视图

How to Implement Multiple List view one below the other without dividing the ActivityScreen in android

我在同一个 Activity 中使用了 3 个 ListViews,但我看不到我的第三个列表视图,而我的第二个列表视图在其内部滚动,我需要所有三个列表视图在单个页面中一个接一个地滚动。 如果我使用 android:layout_weight="1" 属性,它会通过分页显示所有列表视图,但我不想分页 activity 屏幕,而是依次显示所有列表视图。

谁能指导我做同样的事情,belopw 是我的 xml 布局,其中包括这三个列表视图:-

<LinearLayout 
    xmlns:android="http://schemas.android.com/apk/res/android"
    android:layout_width="match_parent"
    android:layout_height="wrap_content"
    android:orientation="vertical">

    <ListView
        android:id="@+id/listTopTenBatsmans"
        android:layout_width="match_parent"
        android:layout_height="wrap_content">
    </ListView>

    <ListView
        android:id="@+id/listTopTenBowlers"
        android:layout_width="match_parent"
        android:layout_height="wrap_content">
    </ListView>

    <TextView
        android:id="@+id/tSometextField"
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:text="Fall of Wickets"
        android:textColor="@color/red"
        android:textSize="18sp"
        android:typeface="sans"
        android:textStyle="bold"
        android:background="#ffdfe5"
        android:paddingLeft="5dp" />

    <ListView
        android:id="@+id/listTopTenFielders"
        android:layout_width="match_parent"
        android:layout_height="wrap_content">
    </ListView>

</LinearLayout>

在上面的 XML 中,第一个列表是 appers,其中根据我的适配器视图填充了大约 10 个字段,第二个列表也出现了,根据适配器填充了大约 10 个列表字段,但它滚动本身以及文本视图和列表视图未出现的位置,如果我使用 android:layout_weight="1" 属性,则它通过划分 activity 屏幕显示所有 3 个列表视图和文本视图,但我需要一个之后另一个。

场景:-

ListView1
Element1    Ele1    E1
Element2    Ele2    E2
Element3    Ele2    E3
Element4    Ele4    E4
Element5    Ele5    E5
Element6    Ele6    E6
Element7    Ele7    E7
Element8    Ele8    E8
Element9    Ele9    E9
Element10   Ele10   E10

ListView2
Item1   It1 I1
Item2   It2     I2
Item3   It2     I3
Item4   It4     I4
Item5   It5     I5
Item6   It6     I6
Item7   It7 I7
Item8   It8 I8
Item9   It9     I9
Item10  It10    I10

SomeTextView
Listview3
Source1     Sou1    S1
Source2     Sou2    S2
Source3     Sou2    S3
Source4     Sou4    S4
Source5     Sou5    S5
Source6     Sou6    S6
Source7     Sou7    S7
Source8     Sou8    S8
Source9     Sou9    S9
Source10    Sou10   S10

您应该使用适配器的方法 getViewTypeCount()getItemViewType(int position),所有项目只使用一个 ListView

更多HERE

将您的列表高度设置为具体值,而不是 match_parentwrap_content

根据之前的评论,您有多种选择:

  • 像@snachmsm 建议的那样,在您的适配器中使用 multiple view types
  • 或者使用 MergeAdapter.
  • 将多个适配器合并为一个
  • 或参考最近介绍的RecyclerView

如果您已经设置了三个 ListView 和适配器,最快的解决方案是使用 MergeAdapter。更现代的方法是用您当前的实现换取 RecyclerView,但这可能意味着一些更严重的代码更改。