我基于 ngocchung 的项目开始了一个三层可扩展列表视图:
一切正常,除了当我扩大孩子时它相当慢。
检查打印日志后,我发现每次用 20 项展开子项时,都会调用 getChildView() 20 次。在两级 ExpandableListView 中,它只会被调用大约 7 次,因为列表视图一次只能显示 5 个项目。
所以我得出的结论是由于 onMeasure 在 CustomExpListView.java 中限制的视图高度:
public class CustomExpListView extends ExpandableListView
{
public CustomExpListView(Context context)
{
super(context);
}
protected void onMeasure(int widthMeasureSpec, int heightMeasureSpec)
{
widthMeasureSpec = MeasureSpec.makeMeasureSpec(960, MeasureSpec.AT_MOST);
heightMeasureSpec = MeasureSpec.makeMeasureSpec(20000, MeasureSpec.AT_MOST);
super.onMeasure(widthMeasureSpec, heightMeasureSpec);
}
}
此处将高度设置为 20000,这将加载大量项目,然后展开子列表将滞后,因为每个项目都包含图标和两个文本视图。
我尝试将高度从 20000 更改为屏幕高度(5 个项目高度),它会加快扩展速度,但是......列表在第 5 个子项目结束并拒绝向下滚动!
在我看来,因为子列表视图没有滚动条,只有父亲可以滚动,所以子列表视图必须让自己扁平,这样父亲滚动条才能到达子列表的深处。
是否可以将父列表的视图端口与子列表链接?还是有办法限制预加载的子列表项?
提前致谢!