2

ngocchung のプロジェクトに基づいて、3 レベルの展開可能なリスト ビュー ベースを開始しました。

https://github.com/ngocchung/ThreeLevelExpListView

子を展開するとかなり遅いことを除いて、すべて正常に動作します。
印刷ログを確認したところ、20 個のアイテムを持つ子を展開するたびに、getChildView() が 20 回呼び出されることがわかりました。2 レベルの ExpandableListView では、リスト ビューは一度に 5 項目しか表示できないため、約 7 回しか呼び出されません。

したがって、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 に設定しました。これにより、多数のアイテムが読み込まれます。各アイテムにはアイコンと 2 つのテキスト ビューが含まれているため、サブリストの展開は遅れます。
高さを 20000 から画面の高さ (5 アイテムの高さ) に変更しようとしましたが、展開が速くなりますが... 5 番目のサブアイテムでリストが終了し、スクロールダウンを拒否しました!
私の考えでは、子リスト ビューにはスクロール バーがなく、父親だけがスクロールできるので、子リスト ビューをフラットにして、父親のスクロール バーが子リストの奥深くまで届くようにする必要があります。

親リストのビューポートと子リストを連動させることはできますか?または、プリロードされたサブリスト項目を制限する方法はありますか?
前もって感謝します!

これが、3 レベルのリスト ビューを使用する必要がある理由です。

4

0 に答える 0