Android RecyclerView返回到位置0
我有一个firebase数据库的RecyclerView 当我点击该项目时,应该会显示一个底部工作表对话框 当底部板材对话框显示回收器返回到位置0时 这是来自适配器的底部工作表调用Android RecyclerView返回到位置0,android,firebase,firebase-realtime-database,android-recyclerview,Android,Firebase,Firebase Realtime Database,Android Recyclerview,我有一个firebase数据库的RecyclerView 当我点击该项目时,应该会显示一个底部工作表对话框 当底部板材对话框显示回收器返回到位置0时 这是来自适配器的底部工作表调用 holder.comment.setOnClickListener(new View.OnClickListener() { @Override public void onClick(View v) { CommentBottom
holder.comment.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
CommentBottomSheetDialog dialog=new CommentBottomSheetDialog(context,user,items.get(position));
dialog.show(fragmentManager,dialog.getTag());
}
});
这是底部的板材载荷数据代码
private void loadList() {
ref.addListenerForSingleValueEvent(new ValueEventListener() {
@Override
public void onDataChange(@NonNull DataSnapshot dataSnapshot) {
if (dataSnapshot.hasChildren()){
list=new ArrayList<>();
for (DataSnapshot d:dataSnapshot.getChildren()) {
Comments comments=d.getValue(Comments.class);
list.add(comments);
}
CommentsAdapter adapter=new CommentsAdapter(context,list);
rec.setAdapter(adapter);
}
}
@Override
public void onCancelled(@NonNull DatabaseError databaseError) {
}
});
}
private void loadList(){
ref.addListenerForSingleValueEvent(新的ValueEventListener(){
@凌驾
public void onDataChange(@NonNull DataSnapshot DataSnapshot){
if(dataSnapshot.hasChildren()){
列表=新的ArrayList();
对于(DataSnapshot d:DataSnapshot.getChildren()){
Comments Comments=d.getValue(Comments.class);
增加(评论);
}
CommentsAdapter=新的CommentsAdapter(上下文,列表);
rec.setAdapter(适配器);
}
}
@凌驾
已取消的公共void(@NonNull DatabaseError DatabaseError){
}
});
}
注意:底部工作表也从firebase加载数据
recyclerView.layoutManager.scrollToPosition(位置)
只需创建一个带有首选项SNAP TO START的平滑滚动条:
RecyclerView.SmoothScroller SmoothScroller=新建LinearSmoothScroller(上下文){
@重写受保护的int getVerticalSnapPreference(){
将LinearSmoothScroller.SNAP_返回到_START;
}
};
现在设置要滚动到的位置,如果要滚动到顶部,请设置0
smoothScroller.setTargetPosition(位置);
并将新创建的平滑滚动条作为
layoutManager.startSmoothScroll(smoothScroller);
提供的信息不足以让人产生想法。请添加更多信息以提供帮助。您的问题是什么?我遇到了一个问题,即当底部工作表显示如何防止此情况时,回收器返回到位置0。我遇到了一个问题,即当底部工作表显示如何防止此情况时,回收器返回到位置0。您需要以某种方式保留底部工作表的状态。在这里,在您的情况下,您应该保留RecyclerView的当前滚动索引,以防止重置滚动。也许这篇文章能有所帮助