多くの子ビュー (ボタンなど) を持つスクロール パネルを作成しています。各子ビューには、行と列のインデックスに基づいて固定の場所があります。大量にあるため、最初は作成できず、メモリが不足するため、子ビューが画面ビュー ポートと交差するとき (ユーザーがその領域にスクロールするとき) にのみ子ビューを追加したいと考えています。onLayout() メソッドを次のようにオーバーライドします。
@Override
protected void onLayout(boolean changed, int l, int t, int r, int b) {
super.onLayout(changed, l, t, r, b);
for (int row = 0; row < ROW_NUM; row++) {
ColumnAdapter columnAdapter = mRowAdapter.getItem(row);
for (int col = 0; col < COLUMN_NUM; col++) {
ItemView itemView = columnAdapter.getView(col, null, this);
if (isOnScreen(row, col)) {
itemView.layout(col * 100, row * 100, (col + 1) * 100, (row + 1) * 100);
addViewInLayout(itemView, row + col, null, true);
}
}
}
scrollTo(getScrollX(), getScrollY());
}
(ColumnAdapter は Adapter 拡張機能であり、ItemView はボタン拡張機能です)。スクロール中に onLayout() が呼び出されないため、これは機能しません。ユーザーがスクロールするときに ItemViews を動的に追加するにはどうすればよいですか?