Questa non è la soluzione esatta del problema relativo al recupero dei dati da Firebase in ordine inverso, ma in ogni caso, abbiamo altri problemi.
Il primo intervento è menzionato in un commento sull'utilizzo di un adattatore personalizzato per l'elenco.
Per ottenere il comportamento è necessario ottenere i dati di Firebase in un elenco e quindi è necessario eseguirne il reverse prima di passarlo a un adattatore. Semplice!
Il secondo intervento è facile come torta e penso che se si utilizza RecyclerView
potrebbe fare il trucco per te e lo vedo come il modo più semplice per eseguire il lavoro.
Ecco sto modificando alcuni dei miei codice con RecyclerView
// Declare the RecyclerView and the LinearLayoutManager first
private RecyclerView listView;
private LinearLayoutManager mLayoutManager;
...
@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);
}
Impostando mLayoutManager.setReverseLayout(true);
- si sta invertendo il layout e mLayoutManager.setStackFromEnd(true);
posizioni la vista verso l'alto della tua lista.
La migrazione a RecyclerView
è semplice. Il layout sarà qualcosa di simile
<?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>
E nel tuo build.gradle
dependencies {
compile 'com.android.support:recyclerview-v7:23.4.0'
}
È necessario avere FirebaseRecyclerAdapter
può essere trovato qui in FirebaseUI biblioteca.
Nota: Non usare RecyclerView.LayoutManager
come setReverseLayout
e setStackFromEnd
funzioni non saranno trovati in RecyclerView.LayoutManager
. Utilizzare LinearLayoutManager
come indicato.
Aggiornamento
Ecco come è possibile gestire gli eventi click del elementi nell'elenco.
Si è dovuto dichiarare un ViewHolder
per implementare il RecyclerView
giusto? Basta aggiungere un'altra funzione all'interno della classe ViewHolder
come nell'esempio seguente e chiamare questa funzione dopo le funzioni setText
che hai ricevuto.
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)...
}
}
Perché dovresti preoccuparti di utilizzare l'adattatore Firebase in primo luogo? Ho appena dato un'occhiata a Firebase Adapter ed è solo un semplice adattatore che si estende da BaseAdapter. Ti consiglio vivamente di creare il tuo adattatore se hai bisogno di personalizzare le cose. – abeikverdi
Bene, sono molto nuovo a Firebase e non ho esperienza eccessiva in Java per lo sviluppo di Android. Ho visto che FirebaseListAdapter era veloce e facile da implementare, quindi inizialmente ho deciso che sarebbe stata una buona idea usarlo. –
@abeikverdi gli adattatori in FirebaseUI nascondono una certa complessità dietro un codice abbastanza piccolo. In base a quale esperienza consiglieresti di scrivere da solo? –