Clasificación de la posición de los elementos mediante FirebaseRecyclerAdapter

En mi aplicación, los usuarios pueden clasificar fácilmente el contenido con un criterio especial, que es orderByChild .

Si buscan un documento de física en Suiza

.orderByChild("Tag_country").equalTo("Physics_Switzerland"); 

Si buscan cualquier documento en Suiza

  .orderByChild("Country").equalTo("Switzerland"); 

Los usuarios pueden clasificar los contenidos en función de su fecha de publicación, el número de veces que se han visto o la cantidad de cerebros \ le gusta un solo post.

 .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, como todos sabemos

Sólo puede utilizar un método de orden por cada vez. Llamar un método de orden por varias veces en la misma consulta genera un error.

Así que algo como OrderByChild("Tag_country).equal("Physics_Switzerland").OrderByChild("Views");

Realmente se bloqueará su aplicación

He estado intentando 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éstreme documentos de física en Suiza desde las vistas más altas a las más bajas

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 cuenta de Pdf Views por

viewHolder.ViewCounts

La consulta

¿Cómo puedo manipular \ reordenar las posiciones de los artículos, cliente-lado , y basado en 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, mediante programación. Introduzca aquí la descripción de la imagen

Introduzca aquí la descripción de la imagen

Estructura de los 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, 

En mi consulta estaba luchando concting un entero dentro de una cadena

OrderByChild("Tag_country_views")

La solución era tranquila y sencilla:

  • Mantenga el entero en la estructura de su hijo con su método de incremento
  • Cree otro valor, que envuelva el valor Views en una String String.valueOf(vh.Tag+"_"+vh.Country+"_"+vh.ViewsCount)
  • En lugar de OrderByChild solo, considere el uso de startAt y limitTo así

Por ejemplo: ¿Un filtro de usuario para el documento matemático más visto en los Reinos Unidos? Entonces, todo lo que hay que hacer es

  OrderByChild("Tag_Country_Views") .startAt("Mathematics_United Kingdoms) .limitToFirst(DocumentsCount); 

(resultado)

Introduzca aquí la descripción de la imagen

También hay un truco menor necesario, el recuento debe, preferentemente, comenzar en 1,000,000,000 visitas, mientras que su incremento sigue siendo 1+

Introduzca aquí la descripción de la imagen

De esta manera, la consulta de String_value es factible.

Introduzca aquí la descripción de la imagen

Dividir por mil millones y usar el operador del módulo revelará el recuento real de la visión

int CarrotCake = views % 1000000000;

  • Fusión de manifiesto de Android con las bibliotecas de facebook y firebase
  • FirebaseRecyclerAdapter no actualiza los índices de elementos cuando se eliminan los datos
  • FirebaseUI auth se está estrellando en android
  • Acoplamiento de FirebaseRecyclerViewAdapter a un Boolean / String Map.Entry
  • Cómo utilizar el adaptador de lista de Firebase
  • Uso de GeoFire para rellenar Firebase Recycler View en android
  • Cómo implementar un SetOnItemClickListener FirebaseRecyclerViewAdapter
  • Firebase UI - Auth - Utilizar diseño propio
  • la fusión de manifiesto de android falló, servicios de juego de gms / firebase
  • Paginación del adaptador reciclador Firebase
  • Firebase UI RecyclerView onClick
  • FlipAndroid es un fan de Google para Android, Todo sobre Android Phones, Android Wear, Android Dev y Aplicaciones para Android Aplicaciones.