Я создаю панель прокрутки со многими дочерними представлениями (например, кнопки). Каждое дочернее представление имеет фиксированное местоположение на основе индекса строки и столбца. Я не могу создать их в начале, так как их много, и у меня не хватит памяти, поэтому я бы хотел добавить дочерний вид, когда он пересекается с портом просмотра экрана (когда пользователи прокручиваются до этой области). Я переопределить метод OnLayout() с чем-то вроде этого:Добавить дочерние представления при прокрутке в (extened) AdapterView
@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 является расширением адаптера и ItemView является расширение кнопка). Это не сработает, потому что onLayout() не вызывается во время прокрутки. Что делать, чтобы динамически добавлять элементы ItemViews в качестве пользовательских прокруток?
Hi Noel, спасибо за ответ. Я бы хотел использовать ListView, кроме того, что виджет, который я создаю, содержит много столбцов, которые могут прокручиваться вместе, а ListView обрабатывает их собственную прокрутку по отдельности. –