В моем андроида приложения я использую следующий кодOrderByChild() не работает в клиенте Android
FirebaseDatabase database = FirebaseDatabase.getInstance();
ref = database.getReference().child(Keys.CONTACTIFY_CONTACTS).child(sharedPrefs.getString(SharedPreferenceValues.CURRENT_USER_UID, "")).child(Keys.SHARED_CONTACTS);
refer = ref.orderByChild(Keys.TIME);
refer.addListenerForSingleValueEvent(new ValueEventListener() {
@Override
public void onDataChange(DataSnapshot dataSnapshot) {
ArrayList<HashMap<String, Object>> sharedList = new ArrayList<HashMap<String, Object>>();
if (dataSnapshot.getValue() != null) {
Object[] rootData = ((HashMap<String, Object>) dataSnapshot.getValue()).values().toArray();
for (Object singleElement :
rootData) {
HashMap<String, Object> eachElement = (HashMap<String, Object>) singleElement;
sharedList.add(eachElement);
}
recyclerView.setAdapter(new SharedItemsRecyclerViewAdapter(sharedList, mListener, getActivity()));
}
}
@Override
public void onCancelled(DatabaseError databaseError) {
}
});
Моя firebase структура базы данных
Мои Firebase правила актуальны для сценария
{
"rules": {
"mapper":{
".read": "auth!= null",
".write": "auth!= null"
},
"share_id_mapper":{
".read": "auth!= null",
".write": "auth!= null"
},
"contactify_contacts":{
//can read a message if authenticated
"$uid": {
"shared_contacts": {".indexOn": "time",
".write": "auth!= null",
Проблема в том, что я получаю hasmap из моментального снимка в сортированном по умолчанию способе, то есть sortbyKey(). Но я ожидаю, что результат будет основан на значении ключа времени в данных узла.
Это работает, однако Список data = new ArrayList (); - это путаница, но отдых был ОК ;-). –
Как насчет того, чтобы изменить порядок по умолчанию по возрастанию или по убыванию? –
https://docs.oracle.com/javase/7/docs/api/java/util/Collections.html#reverse(java.util.List) –