在三级可扩展列表视图中展开第三级缓慢,因为无论视图端口如何,都必须完全加载第三级

时间:2018-02-23 10:01:14

标签: android expandablelistview multi-level onmeasure

我根据ngocchung的项目开始了一个三级可扩展列表视图:

  

https://github.com/ngocchung/ThreeLevelExpListView

一切都很好,但是当我扩大孩子时,它的速度相当慢 在我检查了打印日志后,我发现每次扩展一个包含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个子项目结束时拒绝向下滚动!
在我看来,由于子列表视图没有滚动条,只有父亲可以滚动,因此子列表视图必须使其自身平坦,以便父亲滚动条可以深入到子列表内部。

是否可以将父列表的视口链接到子列表?或者有一种方法来限制预加载的子列表项? 提前致谢!

Here's why I have to use three level list view

0 个答案:

没有答案