2017-01-14 4 views
4

Dies ist meine onCreate, die den Adapter, LinearLayoutManager und etc. behandelt. Ich versuchte jede einzelne Option, um zu versuchen, es nach oben zu scrollen, konnte aber nicht. Ich habe sogar versucht, meinen eigenen benutzerdefinierten LinearLayoutManager zu erstellen.Android Recyclerview nach oben scrollen

//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

Warum kehren Sie Ihr LLM um? Würden Sie gerne jedes Mal nach unten scrollen, wenn am Ende der Recyclerview etwas Neues hinzugefügt wird? Wie Messaging-App? –

+0

Ich möchte die neueste immer an der Spitze sein. Deshalb kehre ich es um. – nnn

+0

Können Sie ein Beispiel mit UI anzeigen? Wenn Sie ein Element an den Anfang der Recycler-Ansicht hinzufügen möchten, müssen Sie LLM nicht rückgängig machen. Sie müssen Array umkehren. erklär es mit Bild wenn du kannst. Ich bin mir nicht sicher, was dein Problem ist. –

Antwort

7

Versuchen Sie taskRecyclerView.getLayoutManager().scrollToPosition(0) oder taskRecyclerView.scrollToPosition(your_position)?

RecyclerView implementiert keine Scrolling-Logik in taskRecyclerView.scrollToPosition(your_position) und taskRecyclerView.getLayoutManager().scrollToPosition(0) ist spezifischer und es geht um spezifischen Index abhängig implementiert Layout, in Ihrem Fall ist linear.

+0

Versuchte 'taskRecyclerView.scrollToPosition (your_position)' und 'taskRecyclerView.getLayoutManager(). ScrollToPosition (0)' this work. Kannst du erklären warum? – nnn

+0

RecyclerView implementiert keine Scroll-Logik in 'taskRecyclerView.scrollToPosition (Ihre_Position)' und 'taskRecyclerView.getLayoutManager(). ScrollToPosition (0)' ist spezifischer und geht je nach implementiertem Layout auf spezifischen Index, in Ihrem Fall linear. –

+0

Ich verstehe. Vielen Dank! – nnn

Verwandte Themen