在我的应用程序中,我有多个从api获取的数据列表,我必须在一个活动中显示它们。此外,我有此列表的标题。问题是只有第一个列表视图被显示和滚动,而第二个列表视图被删除。是否可以显示两个列表视图,以便第二个列表视图完成后第二个将开始?也许我必须在一个列表视图中显示所有列表?如果是,我如何设置节标题,以便包含来自不同api的数据的列表将被分开并逐个动态向下滚动?我无法在互联网上找到这个问题的完整答案
答案 0 :(得分:0)
问题可能出在你的xml文件中。尝试设置listViews的精确高度,这样你就可以在设计器中看到它们。它应该工作。 麻烦是你有更多的滚动视图。有一些黑客可以重新计算列表视图的高度但是很愚蠢。
我认为最适合你的可以是: 仅使用一个ListView准备xml。准备一些东西作为listItem - 类,如果它是title或者是什么类型的数据并且使listItems的ArrayAdapter处理它们。比适配器解决你需要为哪个项目绘制的视图。
答案 1 :(得分:0)
这些解决方案很难看,但可以适用于您的情况: 1.您可以使用单个列表视图显示您正在讨论的两个API中的数据集。应该有一种方法来确定该项目来自哪个API。
因此,您可以为标题部分定义不同的drawable,然后为各个项目定义。
<header1 background="header_drawable">
<item1 background="item_drawable">
<item2 background="item_drawable">
<item3 background="item_drawable">
<item4 background="item_drawable">
<header2 background="header_drawable"> <-- Here you need to identify that this is from 2nd API and adda header section with appropriate drawable.
<item1 background="item_drawable">
<item2 background="item_drawable">
<item3 background="item_drawable">
<item4 background="item_drawable">
所有这些功夫都可以在您的适配器中完成。如果您需要更多帮助,请与我们联系。
这是另一个丑陋的解决方案。在项目中将LinearLayout作为子项具有可扩展的列表视图。所以,布局看起来像这样:
<Header1> <- This contains the first header (a listview item)
<LinearLayout/> <- This will contain the data from the first API
<Header1/>
<Header2> <- This contains the first header (a listview item)
<LinearLayout/> <- This will contain the data from the first API
<Header2/>
现在,您可以动态填充LinearLayout项目。这里有很多帖子。
请注意,如果您的API中有少量商品,但是如果您有大量商品,那么这种方法很有效,那么我建议第一种方法与第二种方法一样,您将无法获得列表视图或回收站视图的好处。如果您需要更多说明,请再次告诉我。
本文中提到了另一种解决方案。 Haven没试过,但看起来很有希望: http://www.captechconsulting.com/blogs/android-expandablelistview-magic
答案 2 :(得分:0)
我找到了问题的答案。其他用户提供的答案可能也是正确的,但对于像我这样的懒人来说它们太长了:)最合适的方法是将listview放在scrollview中,但它们只显示列表的第一项。我刚刚将xml文件中的ListView更改为ExpandedListView。这里有更详细的答案http://joerichard.net/android/android-listview-not-wrap_content-inside-scrollview/。致本博客作者Joe Richard的作者