Listview:同时平滑滚动和行更新

时间:2015-06-23 17:18:00

标签: android listview scroll

我基本上必须平滑滚动列表视图并同时更新行。 我现在用一个简单的方法做到这一点:

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);
}

它在合理的滚动速度下运行良好,但是当速度更快(以高速率调用上面的第一个块)时,它可能会有点滞后。在顺利滚动时,我可以做些什么来改进行更新?

2 个答案:

答案 0 :(得分:0)

你不应该像这样直接访问iew。相反,您应该更新列表显示的模型对象,并在适配器中调用notifyDataSetChanged()

答案 1 :(得分:0)

嗯,我在游戏中真的很晚。这看起来是RecyclerView推出的原因之一。我从现在开始尝试使用这个组件。

layoutManager.scrollToPosition(position);

的组合

adapter.notifyItemChanged(position);完成了这项工作。一切顺利!