如何在 Android 中通过 Firebase Childs 按升序对列表进行排序
Posted
技术标签:
【中文标题】如何在 Android 中通过 Firebase Childs 按升序对列表进行排序【英文标题】:How to Sort List in Ascending Order by Firebase Childs in Android 【发布时间】:2018-05-08 11:54:57 【问题描述】:ref.addValueEventListener(new ValueEventListener()
@Override
public void onDataChange(DataSnapshot dataSnapshot)
list = new ArrayList<>();
for(DataSnapshot dataSnapshot1 :dataSnapshot.getChildren())
Model userdetails = dataSnapshot1.getValue(Model.class);
Model listdata = new Model();
String name = userdetails.getName();
String points = userdetails.getPoints();
listdata.setName(name);
listdata.setPoints(points);
list.add(listdata);
Adapter recyclerview = new Adapter(list, getActivity());
RecyclerView.LayoutManager layoutmanager = new LinearLayoutManager(getActivity());
recycler.setLayoutManager(layoutmanager);
recycler.setItemAnimator( new DefaultItemAnimator());
recycler.setAdapter(recyclerview);
这是我用于从 firebase 检索数据的代码。
下面是数据。
我想按升序但按点对数据进行排序。 最大点将首先出现。
任何人都可以帮助我吗?谢谢。
【问题讨论】:
【参考方案1】:试试这个,
public class Model implements Comparable<Model>
@Override
public int compareTo(@NonNull Model model)
String points= model.getPoints();
return this.points.compareTo(model);
并将Collections.sort(list)
用于数组列表。
注意:使用整数代替字符串。
【讨论】:
【参考方案2】:试试这个
Collections.sort(list, new Comparator<Model>()
@Override
public int compare(Model lhs, Model rhs)
return lhs.getName().compareTo(rhs.getName());
);
【讨论】:
我想按点排序,而不是按名称排序,否则,它正在工作 更改 lhs.getPoints().compareTo(rhs.getPoints()); 只比较第一个数字 我已经修改了一些,但你的回答对我有帮助。【参考方案3】:Collections.sort(list, new Comparator<Model>()
@Override
public int compare(Model lhs, Model rhs)
return Integer.parseInt(rhs.getPoints()) - Integer.parseInt(lhs.getPoints());
);
问题是它在字符串中,我正在比较字符串,所以我先将它转换为整数并进行比较。
【讨论】:
以上是关于如何在 Android 中通过 Firebase Childs 按升序对列表进行排序的主要内容,如果未能解决你的问题,请参考以下文章
如何在swift ios中通过键值读取子数据或过滤firebase数据