Dies ist nicht die genaue Lösung für Ihr Problem, die Daten von Firebase in umgekehrter Reihenfolge zu erhalten, aber wir haben andere Arbeiten um.
Die erste Arbeit wird in einem Kommentar zur Verwendung eines benutzerdefinierten Adapters für Ihre Liste erwähnt.
Um das Verhalten zu erreichen, müssen Sie die Firebase-Daten in einer Liste abrufen und sie dann selbst umkehren, bevor Sie sie an einen Adapter übergeben. Einfach!
Die zweite Arbeit ist einfach wie Kuchen und ich denke, wenn Sie RecyclerView
verwenden, könnte es den Trick für Sie tun, und ich sehe es als die einfachste Möglichkeit, die Sie erledigen können.
Ist hier bin ich einige meiner Code mit RecyclerView
// Declare the RecyclerView and the LinearLayoutManager first
private RecyclerView listView;
private LinearLayoutManager mLayoutManager;
Modifizieren ...
@Override
public void onViewCreated(View view, Bundle savedInstanceState){
// Use FirebaseRecyclerAdapter here
// Here you modify your LinearLayoutManager
mLayoutManager = new LinearLayoutManager(MainActivity.this);
mLayoutManager.setReverseLayout(true);
mLayoutManager.setStackFromEnd(true);
// Now set the layout manager and the adapter to the RecyclerView
listView.setLayoutManager(mLayoutManager);
listView.setAdapter(adapter);
}
von mLayoutManager.setReverseLayout(true);
Einstellung - Sie Umkehren Ihr Layout und mLayoutManager.setStackFromEnd(true);
Positionen der Blick nach oben deiner Liste.
Migration zu RecyclerView
ist einfach. Ihr Layout wird so etwas wie dieses
<?xml version="1.0" encoding="utf-8"?>
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:app="http://schemas.android.com/apk/res-auto"
xmlns:tools="http://schemas.android.com/tools"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:paddingBottom="@dimen/activity_vertical_margin"
android:paddingLeft="@dimen/activity_horizontal_margin"
android:paddingRight="@dimen/activity_horizontal_margin"
android:paddingTop="@dimen/activity_vertical_margin">
<android.support.v7.widget.RecyclerView
android:id="@+id/my_list"
android:layout_width="match_parent"
android:layout_height="match_parent" />
</RelativeLayout>
Und in Ihrem build.gradle
dependencies {
compile 'com.android.support:recyclerview-v7:23.4.0'
}
Sie müssen haben FirebaseRecyclerAdapter
hier in FirebaseUI Bibliothek gefunden werden kann.
Hinweis: nicht RecyclerView.LayoutManager
wie die setReverseLayout
und setStackFromEnd
Funktionen werden nicht in RecyclerView.LayoutManager
gefunden anwenden. Verwenden Sie LinearLayoutManager
wie angegeben.
aktualisieren
Hier ist, wie Sie die Click-Ereignisse Ihrer Artikel in der Liste verarbeiten kann.
Sie mussten eine ViewHolder
deklarieren, um die RecyclerView
richtig zu implementieren? Fügen Sie einfach eine weitere Funktion in Ihre ViewHolder
Klasse wie im folgenden Beispiel ein und rufen Sie diese Funktion nach den setText
Funktionen auf, die Sie dort haben.
public static class MyViewHolder extends RecyclerView.ViewHolder {
View mView;
public MyViewHolder(View itemView) {
super(itemView);
mView = itemView;
}
public void setClickEvent() {
// Set the onClickListener on mView
// mView.setOnClickListener(new OnClickListener)...
}
}
Warum sollten Sie den Firebase-Adapter zuerst verwenden? Ich habe mir Firebase Adapter angesehen und es ist nur ein einfacher Adapter, der sich von BaseAdapter erstreckt. Ich empfehle Ihnen dringend, Ihren eigenen Adapter zu erstellen, wenn Sie Dinge anpassen müssen. – abeikverdi
Nun, ich bin Firebase sehr neu und auch nicht in Java für Android-Entwicklung übermäßig erfahren. Ich sah, dass der FirebaseListAdapter schnell und einfach zu implementieren war, also entschied ich mich anfangs, dass es eine gute Idee wäre, das zu verwenden. –
@abeikverdi die Adapter in FirebaseUI verstecken ziemlich viel Komplexität hinter ziemlich wenig Code. Basierend auf welcher Erfahrung empfehlen Sie, selbst zu schreiben? –