我根据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个子项目结束时拒绝向下滚动!
在我看来,由于子列表视图没有滚动条,只有父亲可以滚动,因此子列表视图必须使其自身平坦,以便父亲滚动条可以深入到子列表内部。
是否可以将父列表的视口链接到子列表?或者有一种方法来限制预加载的子列表项? 提前致谢!