ngocchung のプロジェクトに基づいて、3 レベルの展開可能なリスト ビュー ベースを開始しました。
子を展開するとかなり遅いことを除いて、すべて正常に動作します。
印刷ログを確認したところ、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 番目のサブアイテムでリストが終了し、スクロールダウンを拒否しました!
私の考えでは、子リスト ビューにはスクロール バーがなく、父親だけがスクロールできるので、子リスト ビューをフラットにして、父親のスクロール バーが子リストの奥深くまで届くようにする必要があります。
親リストのビューポートと子リストを連動させることはできますか?または、プリロードされたサブリスト項目を制限する方法はありますか?
前もって感謝します!