我正在使用RecyclerView
来显示Firestore数据库中的一些数据。由于明显的原因,我使用FirestoreRecyclerAdapter
作为适配器。我已成功显示RecyclerView
中的所有35个项目。问题是,我无法滚动到特定位置。这是我尝试过的:
recyclerView = locationsFragmentView.findViewById(R.id.recycler_view);
recyclerView.setLayoutManager(new LinearLayoutManager(context));
FirestoreRecyclerOptions<MyModelClass> options = new FirestoreRecyclerOptions.Builder<MyModelClass>().setQuery(query, MyModelClass.class).build();
adapter = new MyFirestoreRecyclerAdapter(options);
recyclerView.setAdapter(adapter);
recyclerView.setHasFixedSize(false);
recyclerView.getLayoutManager().scrollToPosition(10);
每次打开应用程序时,我总是位于第一个位置,而不是scrollToPosition()
方法中指定的第十个位置。
我也使用过:
recyclerView.scrollToPosition(10);
和
recyclerView.smoothScrollToPosition(10);
但是没有运气。如何滚动到特定位置?谢谢!
答案 0 :(得分:1)
而不是使用recyclerView.scrollToPosition(10);
来尝试使用以下代码在recyclerview中设置位置
recyclerView.smoothScrollToPosition(10);
答案 1 :(得分:0)
recyclerView
不会滚动,因为调用recyclerView.scrollToPosition(10);
时它仍然是空的,应该在recyclerView
响应中填充Firebase
之后移动该代码在回调中。
答案 2 :(得分:0)
就我而言,我不想移动到特定位置,而是只想在从不同的 Activity 返回或从后台返回后保持原始位置。
我刚刚添加了这个空的监听器,它正在工作。
listAdapter.snapshots.addChangeEventListener(object : ChangeEventListener {
override fun onChildChanged(
type: ChangeEventType,
snapshot: DocumentSnapshot,
newIndex: Int,
oldIndex: Int
) {
}
override fun onDataChanged() {
}
override fun onError(e: FirebaseFirestoreException) {
}
})
这里的 listAdapter
是 FirestoreRecyclerAdapter
。