二级列表是比较常用的控件,Group列表一般在一开始就会获取到,但Group下的子列表还是要通过网络请求去获取的,所以,这里使用异步比较好,那在界面上如何处理更好呢,楼主使用的是这样的方式:
1.setup 一个ExpandableListView,Group的数据在程度一开始就加载好了。
2.我们为ExpandableListView设置
mList.setOnGroupClickListener(this);
其中的内容这样来写
@Override
public boolean onGroupClick(ExpandableListView parent, View v, int groupPosition, long id) {
boolean expanded = parent.isGroupExpanded(groupPosition);
if (!expanded) {
//在这加载数据,推荐使用AsycnTask之类的在另一个线程里做喽
return true;
}
return false;
}
3.在另一个线程中请求完数据之后(楼主用的是AsyncTask)
private class AsyncGetChannelTask extends AsyncTask<Object, Void, Integer> {
@Override
protected Integer doInBackground(Object... params) {
// 从网络请求数据
return result;
}
@Override
protected void onPostExecute(Integer res) {
// ok,现在有数据了,可以展开了
mList.expandGroup(groupPos);
}
}
4. 这样我们想要的异步加载效果就达到了,楼主上三张图来展示下。