我想按字母顺序对列表视图中的项目进行排序,我尝试了orderByChild("name")
,但我认为它甚至不起作用。不过这是我的代码:
DatabaseReference rootRef = FirebaseDatabase.getInstance().getReference();
DatabaseReference medicinesRef = rootRef.child("Medicines");
ValueEventListener eventListener = new ValueEventListener() {
@Override
public void onDataChange(com.google.firebase.database.DataSnapshot dataSnapshot) {
for(com.google.firebase.database.DataSnapshot ds : dataSnapshot.getChildren()) {
medName = ds.child("name").getValue(String.class);
Log.d("TAG", medName);
myArrayList.add(medName);
ArrayAdapter<String> firebaseAdapter = new ArrayAdapter<String>(MedicineSearch.this, android.R.layout.simple_list_item_1, myArrayList);
lv.setAdapter(firebaseAdapter);
}
}
@Override
public void onCancelled(DatabaseError databaseError) {}
}; // populates listview
medicinesRef.addListenerForSingleValueEvent(eventListener);
rootRef.keepSynced(true);
答案 0 :(得分:0)
要对数据进行排序,您需要使用Query
,为此,请参阅以下代码:
DatabaseReference rootRef = FirebaseDatabase.getInstance().getReference();
DatabaseReference medicinesRef = rootRef.child("Medicines");
Query query = medicinesRef.orderByChild("name");
query.addListenerForSingleValueEvent(/* ... */);
另一种方法是使用相同的代码并使用以下方式对列表进行排序:
Collections.sort(myArrayList);
但是不要在for循环中创建和使用适配器。将这两行代码移到循环之外,否则最终会在ListView
中包含一个项目。