我正在創建一個包含許多子視圖(例如按鈕)的滾動面板。每個子視圖都有一個基於行列索引的固定位置。我不能在開始時創建它們,因爲它們有很多,並且我的內存不足,所以我只想在與屏幕視圖端口相交的時候添加子視圖(當用戶滾動到該區域時)。餘像這樣的東西覆蓋onLayout()方法:滾動時添加子視圖(擴展後)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?
嗨諾埃爾,謝謝你的迴應。我很喜歡使用ListView,除了我創建的小部件包含許多可以一起滾動的列,而ListView則分別處理它們自己的滾動。 – 2010-10-07 16:32:31