real - leer datos firebase android studio
Ordenando la posiciĆ³n de los elementos usando FirebaseRecyclerAdapter (1)
En mi Query estaba luchando por concatar un entero dentro de una cadena
OrderByChild("Tag_country_views")
La solución fue muy simple:
- Mantenga el número entero en la estructura de su hijo con su método de incremento
- Cree otro valor, que ajuste el valor de Views en String
String.valueOf(vh.Tag+"_"+vh.Country+"_"+vh.ViewsCount)
- En lugar de OrderByChild solo, considere usar
startAt
ylimitTo
también
por ejemplo: ¿un usuario podría filtrar el documento matemático más visto en los Estados Unidos? entonces, todo lo que se necesita hacer es
OrderByChild("Tag_Country_Views")
.startAt("Mathematics_United Kingdoms)
.limitToFirst(DocumentsCount);
(resultado)
También se necesita un pequeño truco, el recuento debe, preferiblemente, comenzar en 1,000,000,000
visitas, mientras que su incremento permanece en 1+
De esta forma, la consulta de String_value es factible.
Dividir por mil millones y usar el operador de módulo revelará el recuento de la vista real
int CarrotCake = views % 1000000000;
En mi aplicación, los usuarios pueden ordenar fácilmente el contenido con un criterio especial, es orderByChild .
si cazan documentos de física en Suiza
.orderByChild("Tag_country").equalTo("Physics_Switzerland");
si buscan algún documento en Suiza
.orderByChild("Country").equalTo("Switzerland");
Los usuarios pueden ordenar los contenidos en función de su fecha de publicación, la cantidad de veces que se han visto o la cantidad de cerebros / me gusta que tiene una sola publicación.
.orderByChild("Views") // sort list by highest views
.orderByChild("Brains") // sort list by most likes/brains
.orderByChild("TimeStamp") // sort list by newest post/edit
Sin embargo, un usuario no puede ordenar el contenido más de una vez, ya que todos podemos saber
Solo puede usar un método de ordenar por vez. Llamar a un método de orden varias veces en la misma consulta arroja un error.
Así que algo así como OrderByChild("Tag_country).equal("Physics_Switzerland").OrderByChild("Views");
realmente bloqueará tu aplicación
He intentado ordenar una consulta ya especificada en función del número de veces que se ha visto un documento. Es decir, en orden descendente, muéstrame documentos de física en Suiza desde el punto de vista más alto al más bajo
Cómo se ajusta el FirebaseRecycler
final Query DBquery = FirebaseDatabase.getInstance().getReference().child("PDF").child("Content")
.orderByChild("tag_Country").equalTo("Chemistry_Switzerland");
FirebaseRecyclerAdapter<pdfGstrings, Pdf_BlogViewHolder> fbRecyclerAdapter;
fbRecyclerAdapter = new FirebaseRecyclerAdapter<pdfGstrings, Pdf_BlogViewHolder>(
pdfGstrings.class,
R.layout.pdf_g_card,
Pdf_BlogViewHolder.class,
DBquery
) {
PdfRecycler.setAdapter(fbRecyclerAdapter);
fbRecyclerAdapter.notifyDataSetChanged();
Cómo se está poblando la vista
@Override
protected void populateViewHolder(final Pdf_BlogViewHolder viewHolder, final pdfGstrings model, final int position) {
final String post_key = getRef(position).getKey();
Render(viewHolder, model, post_key);
}
};
Puedo acceder a cada recuento de vistas en PDF por
viewHolder.ViewCounts
La consulta
¿Cómo puedo manipular / reordenar las posiciones de los artículos, desde el lado del cliente y en base a un valor entero? Aquí el valor entero de viewHolder.ViewCounts
Ejemplo: Alinee la celda con 325 vistas en la parte superior de la celda con 92 vistas, programáticamente.
Estructura de niños
Pdf
Content
-Kd5YcEuE1yKTSdpaZi7
"Brains" : 2,
"Country" : "Switzerland",
"Tag_country" : "Chemistry_Switzerland",
"TimeStamp" : 12849127519,
"Views" : 92,
-Kd5YcoijSDujaxpaZsE
"Brains" : 12,
"Country" : "Switzerland",
"Tag_country" : "Chemistry_Switzerland",
"TimeStamp" 14349127519
"Views" : 352,
-Kd5YHDIUscDujaxpaZ13
"Brains" : 1,
"Country" : "Malaysia",
"Tag_country" : "Mathematics_Malaysia",
"TimeStamp" 14341221519
"Views" : 218,
-Kd5YHDIUJAdhxaxpas93
"Brains" 91,
"Country" : "Argentine",
"Tag_country" : "Archaeology_Argentine",
"TimeStamp": 14949127519,
"Views" : 928,