【发布时间】:2015-06-23 17:18:00
【问题描述】:
我基本上必须同时平滑滚动列表视图并更新一行。 我现在用一种简单的方法来做:
mListViewWeeks.post(new Runnable() {
@Override
public void run() {
// update the row concerned
updateItemAtPosition(rowIndex);
int duration = 200;
mListView.smoothScrollToPositionFromTop(rowIndex, 0, duration);
}
});
使用 updateItemAtPosition() 函数:
private void updateItemAtPosition(int position) {
int visiblePosition = mListView.getFirstVisiblePosition();
View view = mListView.getChildAt(position - visiblePosition);
mListView.getAdapter().getView(position, view, mListView);
}
它在合理的滚动速度下运行良好,但是当速度更快时(以高速率调用上面的第一个块)它可能会有点滞后。在平滑滚动的同时,我可以做些什么来改进更新行?
【问题讨论】:
-
对于更新列表视图,您需要实现视图模式javacodegeeks.com/2013/09/…,您的列表视图会更高效且可平滑滚动。
-
我使用这种模式,当列表项在屏幕上可见时,这种模式会调用 getView()。现在如何更新已经在屏幕上可见的项目?