使用FirebaseRecyclerAdaptersorting项目的位置

在我的应用程序中,用户可以使用一个特殊的标准,即orderByChild轻松地对内容进行sorting。

如果他们在瑞士寻找物理文件

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

如果他们在瑞士寻找任何文件

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

用户可以根据他们的发布date,浏览次数或者喜欢单个post的大脑数量对内容进行sorting。

 .orderByChild("Views") // sort list by highest views .orderByChild("Brains") // sort list by most likes\brains .orderByChild("TimeStamp") // sort list by newest post\edit 

但是,大家都知道,用户不可能不止一次对内容进行sorting

一次只能使用一个订单方式。 在同一个查询中多次调用sorting方法会引发错误。

所以像OrderByChild("Tag_country).equal("Physics_Switzerland").OrderByChild("Views");

实际上会崩溃你的应用程序

我一直在尝试根据查看文档的次数对已经指定的查询进行sorting。 也就是从大到小的顺序,在瑞士向我展示从最高层到最低层的物理文件

如何调整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(); 

视图如何被填充

  @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); } }; 

我可以通过访问每个Pdf Views数量

viewHolder.ViewCounts

查询

如何操作\重新sorting项目位置, 客户端 ,并基于一个整数值? 这里是viewHolder.ViewCounts的整数值

示例:以编程方式将单元格与92个视图上的单元格顶部的325个视图alignment。 在这里输入图像说明

在这里输入图像说明

儿童结构

 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, 

Solutions Collecting From Web of "使用FirebaseRecyclerAdaptersorting项目的位置"

在我的查询中,我挣扎在一个string内的整数

OrderByChild("Tag_country_views")

解决scheme很简单:

  • 使用递增方法保持子结构中的整数
  • 创build另一个值,将视图值包装成一个stringString.valueOf(vh.Tag+"_"+vh.Country+"_"+vh.ViewsCount)
  • 不要单独使用startAtlimitTo考虑使用startAtlimitTo

例如:用户是否会筛选联合王国最常见的math文件? 那么,所有需要做的是

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

(结果)

在这里输入图像说明

还有一个小技巧需要,计数应该,最好开始在10 1,000,000,000观看,而它的增量仍然在1+

在这里输入图像说明

这样,查询String_value是可行的。

在这里输入图像说明

除以10亿,使用模数运算符将显示实际的查看次数

int CarrotCake = views % 1000000000;