【问题标题】:How to Implement Multiple List view one below the other without dividing the ActivityScreen in android如何在不分割android中的ActivityScreen的情况下实现一个在另一个下方的多个列表视图
【发布时间】:2015-03-09 08:11:33
【问题描述】:

我在同一个Activity 中使用 3 个ListViews,一个在另一个之下在一个接一个的页面中。 如果我使用android:layout_weight="1" 属性,它通过划分页面显示所有列表视图,但我不想划分活动屏幕,而是一个接一个地显示所有列表视图。

谁能指导我,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 中,第一个列表是根据我的适配器视图填充的,其中包含大约 10 个字段,而第二个列表也显示为根据适配器填充的大约 10 个列表字段,但它会自行滚动,并且作为textview 和 list view 没有出现,如果我使用 android:layout_weight="1" 属性,那么它通过划分活动屏幕显示所有 3 个 listvies 和 textview,但我需要一个接一个。

场景:-

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

【问题讨论】:

  • 几个选项:在您的适配器中使用different view types,或查看MergeAdapter,或RecyclerView
  • @MH。感谢 MergeAdapter 为我工作,请将其写在答案中,以便我接受您的答案。再次感谢队友。

标签: android listview android-listview android-custom-view


【解决方案1】:

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

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

【讨论】:

  • 你能帮我吗,因为我正在使用 MergeAdapter。我能够合并适配器,然后将该适配器设置为列表视图。但是当我尝试使用 mergeAdapter.addView(View view); 添加一些视图时方法。我在 addView() 上收到 java.lang.NoClassDefFoundError;方法线。
  • @PravinsinghWaghela:找不到什么类?如果您没有使用 Gradle/Maven 将 MergeAdapter 作为依赖项包含在内,您可能已经错过了它也依赖于 SackOfViewsAdapter 的事实。因此,如果您将MergeAdapter 添加为jar,请确保对SackOfViewsAdapter 执行相同操作。后者在将视图直接添加到 MergeAdapter 时发挥作用(在内部视图然后包装到 SackOfViewsAdapter 实例中)。
  • 再次感谢伙伴,您是真正的救生员。有什么方法可以让我在任何社交网站上关注你吗??
【解决方案2】:

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

更多HERE

【讨论】:

  • 好吧,我所有的三个列表视图在每个适配器中都包含不同的列和行,因此我不能对其中的所有三种不同的内容或项目使用一个列表视图。
  • 您别无选择,将代码重写到一个适配器,这样就应该完成......由于单个ListView的回收方法,没有其他方法。另一种选择是将固定高度设置为每个ListView (adapterCount * getView.getHeight) 并将它们全部放入例如LinearLayout 在其他 ScrollView 中,但请注意回收将被禁用,并且所有列表中的所有项目都将在开始时绘制(对性能不利)
  • @PravinsinghWaghela:你的论点并不成立,因为这正是项目视图类型的用途......无论如何,如果你已经设置了三个 ListViews 和适配器,最快的解决方案与MergeAdapter 一起使用(请参阅我之前对您问题的评论)。更现代的方法是用您当前的实现换取RecyclerView,但这将意味着一些严重的代码更改。
  • @MH。您能否为我提供任何链接以指导如何做到这一点?有演示吗?
  • @PravinsinghWaghela:到底是什么?它们都完全不同。除了前面给出的链接(即MergeAdapter 有一个demo project),Google 是您查找示例的最佳朋友。
【解决方案3】:

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

【讨论】:

  • 在这种情况下将划分活动屏幕。我需要一旦第一个列表视图滚动到它的底部,然后下一个列表视图应该出现,一旦滚动,第三个应该出现。
  • 好的。我误会你了,对不起。然后,您需要的是带有标题的列表视图。看看这个库:nhaarman.github.io/ListViewAnimations/#getting-started我现在不使用标题,只是拖放、滑动删除、撤消等,但它也提供了这些。在 Play 商店查看示例应用程序。
猜你喜欢
  • 1970-01-01
  • 2011-04-22
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多