【问题标题】:Expandable Listview Child count Dynamically可扩展的列表视图子项动态计数
【发布时间】:2014-02-24 23:08:28
【问题描述】:

我正在制作一个基于 Web 服务的 Android 应用程序。我的问题是可扩展列表视图的孩子数。我必须使用 2 种不同的网络服务。即,第一个 Web 服务正在获取父信息。我想要这个,当我单击父第二个 Web 服务必须启动并获取子信息时。我的孩子人数是灵活的。第一个父母有2个孩子,第二个父母有5个孩子。我该如何管理它们。

我正在使用可扩展列表视图适配器。在使用此代码“listview.setadapter(adapter)”之前,此适配器需要子计数

所以我想使用动态儿童计数。当我点击父对话框时,将显示和孩子从服务器获取。

【问题讨论】:

  • 你能发布更多代码吗?

标签: android android-listview android-asynctask expandablelistview expandablelistadapter


【解决方案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; 
      

      我整天都在寻找这个,并且对所有答案越来越恼火。这似乎是最简单的解决方案。

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2019-09-23
        • 2012-04-06
        • 1970-01-01
        • 2017-02-16
        • 1970-01-01
        相关资源
        最近更新 更多