在ExpandableListAdapter的函数getChild()
和getGroup()
getChildrenCount()
添加Log
结果没有打出
而getChildId()
与getChildView()
getGroupId() getGroupView() getGroupCount()
都被调用 并打出了log
想问问未打出log的3个函数分别在什么时候进行调用以及没有打log的原因
在ExpandableListAdapter的函数getChild()
和getGroup()
getChildrenCount()
添加Log
结果没有打出
而getChildId()
与getChildView()
getGroupId() getGroupView() getGroupCount()
都被调用 并打出了log
想问问未打出log的3个函数分别在什么时候进行调用以及没有打log的原因
1 回答624 阅读✓ 已解决
1 回答1.5k 阅读
1 回答1.3k 阅读
1 回答1.2k 阅读
1 回答989 阅读
1 回答813 阅读
1 回答649 阅读
关于getChildrenCount
点击展开GroupItem时,
getChildrenCount()
被调到,以返回这个Group的child数量(为避免出现数组越界的错误);然后adapter才会去调用getChildView()
。关于getChildView()、getChild()、getGroup()
我们需要覆写
getChildView()
,以填充视图,那么首先要拿到数据,而getChild()
的目的就是拿到存储在adapter中对应位置的数据。当然,如果你在adapter之外维护了一个child data list,也可以直接从这个list中取数据。
但是
getChild()
看起来不是更清楚明了吗?getGroup()
也是同样的道理,在执行getGroupView()
填充group视图时,让你可以轻松地获取对应的数据。部分方法调用的Log:
本质上,ExpandableListAdapter 的
getChild(), getGroup()
和 android.widget.Adapter 的Object getItem(int position)
是一回事儿:『Get the data item associated with the specified position in the data set.』参考:
为了回答这个问题找到的一个project: Expandable ListView in ANDROID
这个答案非常棒 stackoverflow - What is the intent of the methods getItem and getItemId in the Android class BaseAdapter?
android.widget.ExpandableListAdapter 源码链接
stackoverflow - Android ExpandableListView - Looking for a tutorial