如何在Android中使用orderByValue在Firebase中推送数据?

时间:2018-11-23 20:31:19

标签: android firebase firebase-realtime-database

在我的代码中,我使用视为(ID)的子项推送数据,每个onfresh方法都会使用setvalue方法更新值(val1,val2,val3)。但是在推送数据时,它会以引用ID的升序存储数据(每次将ID作为子级创建时,如果不存在子级,则如果存在则将更新该值)。因此,我想存储这种类型的数据,然后在推入数据时,必须像mdatarefrence.push()方法一样按顺序存储数据。

mFireDatabase = FirebaseDatabase.getInstance();
    databaseReference = mFireDatabase.getReference().child("Matches").child("Match_"+getmatch_id).child("commentry");


    mCommentryAdpter = new CommentryAdpter( getContext(),R.layout.commentrytuple, applications);

    commentry.setAdapter(mCommentryAdpter);

    databaseReference.addChildEventListener(new ChildEventListener() {
@Override
public void onChildAdded(@NonNull DataSnapshot dataSnapshot, @Nullable String s)
{
    mCommentryEntry = dataSnapshot.getValue(CommentryEntry.class);
    mCommentryAdpter.add(mCommentryEntry);

     ListUtils.setDynamicHeight(commentry);

}

@Override
public void onChildChanged(@NonNull DataSnapshot dataSnapshot, @Nullable String s) {

}

@Override
public void onChildRemoved(@NonNull DataSnapshot dataSnapshot) {

}

@Override
public void onChildMoved(@NonNull DataSnapshot dataSnapshot, @Nullable String s) {

}

@Override
public void onCancelled(@NonNull DatabaseError databaseError) {

}

推送数据时的条件

   mCommentryEntry = new CommentryEntry(va1,val2,val3);   
                         databaseReference.child(ID).setValue(mCommentryEntry);

1 个答案:

答案 0 :(得分:0)

如果要生成推送ID,请在致电push()之前先致电setValue()

mCommentryEntry = new CommentryEntry(va1,val2,val3);   
databaseReference.child(ID).push().setValue(mCommentryEntry);

请注意,我不确定您的代码段中的ID是什么,所以我只是将其复制到此处。如果您想按databaseReference下的按时间顺序排列的唯一子键,只需致电:

databaseReference.push().setValue(mCommentryEntry);