2017-01-14 64 views
4

这是我的onCreate处理该适配器,LinearLayoutManager等 我想每一个选项来尝试它滚动到顶部,但不能。 我甚至尝试创建我自己的自定义LinearLayoutManager。的Android recyclerview滚动到顶部

//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; 
} 
+0

你为什么要改变你的LLM?每次添加到recyclerview的底部时,是否要滚动到底部?像短信应用程序? –

+0

我想要最新的一个始终处于顶端。这就是为什么我将其扭转。 – nnn

+0

你可以用UI显示一个例子吗?如果您想将项目添加到回收站视图的顶部,则不必反转LLM,但必须反转阵列。如果可以,请用Image解释。我不确定你的问题是什么。 –

回答

7

您是否试过taskRecyclerView.getLayoutManager().scrollToPosition(0)taskRecyclerView.scrollToPosition(your_position)

RecyclerView在taskRecyclerView.scrollToPosition(your_position)taskRecyclerView.getLayoutManager().scrollToPosition(0)中没有实现任何滚动逻辑,它更具体,它会根据实现的布局转到具体的索引,在您的情况下是线性的。

+0

尝试过'taskRecyclerView.scrollToPosition(your_position)'和'taskRecyclerView.getLayoutManager()。scrollToPosition(0)'这个工作。你能解释为什么吗? – nnn

+0

RecyclerView没有实现在'taskRecyclerView.scrollToPosition(your_position)'和任何滚动逻辑'taskRecyclerView.getLayoutManager()。scrollToPosition(0)'是更具体的并且它进入特定索引取决于实现布局,你的情况是线性的。 –

+0

我明白了。非常感谢你! – nnn