我的适配器扩展了androidx.recyclerview.widget.ListAdapter
类(不是 android.widget.ListAdapter接口)。效果很好,但是,当我提交包含新项目的列表时,我需要使RecyclerView滚动到特定项目,就像这样:
adapter.submitList(entries);
int position = getPosition(entries.get(0));
if (position != NO_POSITION) {
mListView.smoothScrollToPosition(position);
}
这是我获得职位的方法:
public int getPosition(@Nullable Entry entry) {
for (int pos = 0; pos < getItemCount(); pos++) {
if (getItem(pos).equals(entry)) {
return pos;
}
}
return RecyclerView.NO_POSITION;
}
我的问题是,在getPosition()
之后直接调用submitList()
时总是返回NO_POSITION,因为ListAdapter(使用AsyncListDiffer
来优化要进行的更改量)不是当我完成getPosition()
时,操作完成,因此它返回NO_POSITION。
我的问题是,是否有办法提供回调或类似方法,以了解对列表的所有更改何时完成,因此我可以进行getPosition()
并稍后滚动。