问题描述
您尝试过taskRecyclerView.getLayoutManager().scrollToPosition(0)
还是taskRecyclerView.scrollToPosition(your_position)
?
RecyclerView不会在其中实现任何滚动逻辑taskRecyclerView.scrollToPosition(your_position)
,taskRecyclerView.getLayoutManager().scrollToPosition(0)
而是更加具体,它会根据实现的布局转到特定的索引,在您的情况下是线性的。
解决方法
这是我的onCreate,它处理适配器,LinearLayoutManager等。我尝试了每个选项以尝试将其滚动到顶部,但不能。我什至尝试创建自己的自定义LinearLayoutManager。
//Reson for static to call from a static method to scroll it up
private static RecyclerView taskRecyclerView;
private FirebaseAdapter firebaseAdapter;
private static LinearLayoutManager linearLayoutManager;
@Override
public View onCreateView(LayoutInflater inflater,final ViewGroup container,Bundle savedInstanceState) {
// Inflate the layout for this fragment
final View view = inflater.inflate(R.layout.fragment_tasklist,container,false);
linearLayoutManager = new LinearLayoutManager(getActivity());
taskRecyclerView = (RecyclerView) view.findViewById(R.id.recyclerView_mainTask);
databaseRef = FirebaseDatabase.getInstance().getReference().child(userAccount.getId());
firebaseAdapter = new FirebaseAdapter(TaskObject.class,R.layout.one_task,TaskViewHolder.class,databaseRef.child("Task"),getContext());
linearLayoutManager.setReverseLayout(true);
linearLayoutManager.setStackFromEnd(true);
linearLayoutManager.setSmoothScrollbarEnabled(true);
taskRecyclerView.setAdapter(firebaseAdapter);
taskRecyclerView.setLayoutManager(linearLayoutManager);
relativeLayoutAdd.setOnClickListener(this);
//Listen for any data change
databaseRef.child("Task").addListenerForSingleValueEvent(new ValueEventListener() {
@Override
public void onDataChange(DataSnapshot dataSnapshot) {
//onDataChange called so remove progress bar
//make a call to dataSnapshot.hasChildren() and based
//on returned value show/hide empty view
//use helper method to add an Observer to RecyclerView
}
@Override
public void onCancelled(DatabaseError databaseError) {
}
});
databaseRef.child("Task").keepSynced(true);
return view;
}