我正在制作基于Web服务的Android应用程序。我的问题是使用expandableListView的子计数。我必须使用2种不同的Web服务。也就是说,第一个Web服务正在获取父信息。我想要这个,当我点击父第二Web服务必须启动并获取子信息。我的孩子很有弹性。第一位父母有2个孩子,第二位父母有5个孩子。我该如何管理它们。
我正在使用expandablelistviewadapter。在使用此代码“listview.setadapter(adapter)”
之前,此适配器需要子计数所以我想使用动态子计数。当我点击父对话框将显示和孩子从服务器获取。
答案 0 :(得分:2)
我没有得到你的任务。在大多数情况下,编写自定义适配器是最常用的方法。所以你是正确的方式。这个适配器应该使用数据结构,你想要什么。
编辑:
这应该工作吗? (Item是动态数据的基类)
public class MyBaseListAdapter implements ListAdapter {
List<? extends Item> items;
@Override
public int getCount() {
return items.size();
}
编辑II:
这条线对你来说也很重要:
adapter.notifyDataSetChanged();
您应该在更改数据时尝试同步或阻止访问
答案 1 :(得分:0)
你应该给孩子计算你对每个父母所拥有的数量,即0.当点击父母时,获取被点击父母的孩子,更新你的数据结构,然后调用adapter.notifyDataSetChanged();
答案 2 :(得分:0)
所以我想使用动态子计数。当我点击父对话框时 将展示和孩子从服务器获取。
子计数没有任何动态,您只需在子数据可用时更新适配器。正如其他答案所指出的,您需要实现自定义适配器。基本流程将是:
getChildrenCount()
)为零(因为我们没有任何数据)。理想情况下,您将向用户显示正在检索数据的某种指示符。你谈到了一个对话框,我会去(我的例子是基于这个),带有一个自定义子行,表示加载(在这种情况下,你将从getChildrenCount()
返回1)。 OnGroupClickListener
中调用webservice来检索该特定点击组的数据。您还需要确保只有第一组点击才能获取获取数据的请求。
notifyDataSetChanged()
。我已经就你如何处理这个问题做了一个小样本(表明正在为一个组检索数据,我将该被点击的组显示一个加载的子行,而数据尚不可用)。代码已注释,您可以找到它here。
答案 3 :(得分:0)
MvvmCross 6.2版
_myExpandList = view.FindViewById<ExpandableListView>(Resource.Id.yourExpandedList);
int ExpandViewCount = _myExpandList.Adapter.Count;
我整天都在寻找,并且对所有答案越来越恼火。这似乎是最简单的解决方案。