如何在不将 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_parent
或 wrap_content
。
根据之前的评论,您有多种选择:
- 像@snachmsm 建议的那样,在您的适配器中使用 multiple view types。
- 或者使用
MergeAdapter
. 将多个适配器合并为一个
- 或参考最近介绍的
RecyclerView
。
如果您已经设置了三个 ListView
和适配器,最快的解决方案是使用 MergeAdapter
。更现代的方法是用您当前的实现换取 RecyclerView
,但这可能意味着一些更严重的代码更改。
我在同一个 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_parent
或 wrap_content
。
根据之前的评论,您有多种选择:
- 像@snachmsm 建议的那样,在您的适配器中使用 multiple view types。
- 或者使用
MergeAdapter
. 将多个适配器合并为一个
- 或参考最近介绍的
RecyclerView
。
如果您已经设置了三个 ListView
和适配器,最快的解决方案是使用 MergeAdapter
。更现代的方法是用您当前的实现换取 RecyclerView
,但这可能意味着一些更严重的代码更改。