OrderByChild()在Android客户端中不工作
在我的android应用程序中,我使用以下代码OrderByChild()在Android客户端中不工作,android,firebase,firebase-realtime-database,firebase-security,Android,Firebase,Firebase Realtime Database,Firebase Security,在我的android应用程序中,我使用以下代码 FirebaseDatabase database = FirebaseDatabase.getInstance(); ref = database.getReference().child(Keys.CONTACTIFY_CONTACTS).child(sharedPrefs.getString(SharedPreferenceValues.CURRENT_USER_UID, "")).child(Keys.SHARED_CONTAC
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) {
}
});
问题是,我正在以默认排序方式(即sortbyKey())从快照获取hasmap。但是我希望得到基于节点数据中时间键值的结果。当您对Firebase数据库执行查询时,它返回的
DataSnapshot
包含键、值和结果顺序
但随后将快照转换为映射
:
((HashMap<String, Object>) dataSnapshot.getValue())
我们最近在我们的。中添加了一个这样的示例,但是List data=new ArrayList();有点让人困惑,但其余的都没问题;-)。把默认的顺序颠倒过来,比如升序或降序,怎么样?我就是这么做的,但我希望会有一些firebase查询,谢谢
((HashMap<String, Object>) dataSnapshot.getValue())
public void onDataChange(DataSnapshot dataSnapshot) {
List<String, Object> data = new ArrayList<String,Object>();
for (DataSnapshot childSnapshot: dataSnapshot.getChildren()) {
data.add(childSnapshot.getKey(), childSnapshot.getValue());
}
}