ハムザ・ジャイアント:
あなたは私のListViewがFirebaseデータベースとリンクされているリストビューのソートデータに喜ば助けることができ、私はFirebaseに追加された最後のデータがリストビューに最初に表示されることを意味し、時間によってそれらをソートしたいです。私を許しなさい、私は、Android Studioでまだ初心者です
私はFirebaseデータベースからデータを取得するには、このコードを使用しています
ListView listLocation;
DatabaseReference databaseLocation;
List<Location> locationList;
@Override
public void onStart() {
super.onStart();
databaseLocation.addValueEventListener(new ValueEventListener() {
@Override
public void onDataChange(@NonNull DataSnapshot dataSnapshot) {
locationList.clear();
for (DataSnapshot locationSnapshot : dataSnapshot.getChildren() ){
Location location = locationSnapshot.getValue(Location.class);
locationList.add(location);
}
LocationList adapter = new LocationList(getActivity(), locationList);
Collections.reverse((List<LocationList>) adapter);
listLocation.setAdapter(adapter);
}
@Override
public void onCancelled(@NonNull DatabaseError databaseError) {
}
});
}
オスカー・エミリオ・ペレス・マルティネス:
あなたはあなたのコレクションを並べ替えるしたい方法を説明していないとき、それは少し困難になります。しかし、私はこの場合、私はあなたがでソートしようとしていると仮定していますdistance.
だから、コードスニペットは、以下のようになります。
Collections.sort(adapter, new Comparator() {
@Override
public int compare(Object o1, Object o2) {
Location l1 = (Location) o1;
Location l2 = (Location) o2;
return l1.getDistance().compareTo(l2.getDistance());
}
});
私たちは作っているコンパレータあなたのオブジェクトを比較することができ、またはそれらが同じクラスのすべてのインスタンスである場合、あなたはそのクラスを実装することができます匹敵します。その後、実際のソートを行うためにCollections.sort()を使用することができます。