可扩展的列表视图子项动态计数
Posted
技术标签:
【中文标题】可扩展的列表视图子项动态计数【英文标题】:Expandable Listview Child count Dynamically 【发布时间】:2014-02-24 23:08:28 【问题描述】:我正在制作一个基于 Web 服务的 android 应用程序。我的问题是可扩展列表视图的孩子数。我必须使用 2 种不同的网络服务。即,第一个 Web 服务正在获取父信息。我想要这个,当我单击父第二个 Web 服务必须启动并获取子信息时。我的孩子人数是灵活的。第一个父母有2个孩子,第二个父母有5个孩子。我该如何管理它们。
我正在使用可扩展列表视图适配器。在使用此代码“listview.setadapter(adapter)”之前,此适配器需要子计数
所以我想使用动态儿童计数。当我点击父对话框时,将显示和孩子从服务器获取。
【问题讨论】:
你能发布更多代码吗? 【参考方案1】:我不明白你的问题。在大多数情况下,编写自定义适配器是要走的路。所以你走对了。这个适配器应该使用你想要的数据结构。
编辑: 这应该有效吗? (Item 是我的动态数据基类)
public class MyBaseListAdapter implements ListAdapter
List<? extends Item> items;
@Override
public int getCount()
return items.size();
编辑二: 这条线也可能对你很重要:
adapter.notifyDataSetChanged();
您应该在更改数据时尝试同步或阻止访问
【讨论】:
我必须使用 2 个不同的 wcf 网络服务。第一的;活动 oncreate,第二个;当我单击 expandablelistView 的父级时。我想从第二个服务中动态计算子项以扩展列表视图。【参考方案2】:你应该给孩子计数作为你为每个父母所拥有的,即0。当点击父母时,为点击的父母获取孩子,更新你的数据结构,然后调用adapter.notifyDataSetChanged();
【讨论】:
【参考方案3】:所以我想使用动态儿童计数。当我单击父对话框时 将显示和孩子从服务器获取。
子数量没有什么动态的,您只需要在子数据可用时更新适配器。正如其他答案所指出的,您需要实现一个自定义适配器。基本流程是:
进行第一次 Web 服务调用以检索组数据。 当该调用完成时,构建您的自定义适配器实例,其中子计数 (getChildrenCount()
) 为零(因为我们没有任何数据)。理想情况下,您将向用户显示某种指示符,表明正在检索数据。您谈到了一个对话框,我会(我的示例基于此)使用指示正在加载的自定义子行(在这种情况下,您将从 getChildrenCount()
返回 1)。
在OnGroupClickListener
中调用Web 服务以检索特定点击组的数据。您还需要确保只有第一次组点击才会发出获取数据的请求。
当组的子数据可用时更新适配器(或使其获取新数据)并调用notifyDataSetChanged()
。
我已经制作了一个关于如何处理此问题的小示例(以表明正在为一个组检索数据,我创建了该单击组以在数据尚不可用时显示正在加载的子行)。代码有注释,可以找到here。
【讨论】:
【参考方案4】:MvvmCross 6.2版
_myExpandList = view.FindViewById<ExpandableListView>(Resource.Id.yourExpandedList);
int ExpandViewCount = _myExpandList.Adapter.Count;
我整天都在寻找这个,并且对所有答案越来越恼火。这似乎是最简单的解决方案。
【讨论】:
以上是关于可扩展的列表视图子项动态计数的主要内容,如果未能解决你的问题,请参考以下文章