我基本上必须平滑滚动列表视图并同时更新行。 我现在用一个简单的方法做到这一点:
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);
}
它在合理的滚动速度下运行良好,但是当速度更快(以高速率调用上面的第一个块)时,它可能会有点滞后。在顺利滚动时,我可以做些什么来改进行更新?
答案 0 :(得分:0)
你不应该像这样直接访问iew。相反,您应该更新列表显示的模型对象,并在适配器中调用notifyDataSetChanged()
。
答案 1 :(得分:0)
嗯,我在游戏中真的很晚。这看起来是RecyclerView推出的原因之一。我从现在开始尝试使用这个组件。
layoutManager.scrollToPosition(position);
和adapter.notifyItemChanged(position);
完成了这项工作。一切顺利!