如何获取Firebase Android中的最后一个密钥?

时间:2017-03-16 17:46:09

标签: android firebase firebase-realtime-database

我想获取book节点的最后一个键,并以他的值++增加。

我试过了:

    myRefVal=databaseBook.getReference("books");
    Query lastQuery = myRefVal.limitToLast(1);

    lastQuery.addListenerForSingleValueEvent(new ValueEventListener() {
        @Override
        public void onDataChange(DataSnapshot dataSnapshot) {

            idBook = dataSnapshot.getKey();
            int counter = 1;
            counter = counter + 1;
            idBook = idBook + counter;
        }
        @Override
        public void onCancelled(DatabaseError databaseError) {

        }
    });

enter image description here

一开始我只有书1,点击了addbook按钮后我有了book2但是当我试图第三次添加一本书时,之前的book2值崩溃了,新的那些在Book2上添加了地点。

我正在使用idBook在Firebase数据库中创建节点簿

myRefBook.child(idBook).setValue(bookInfos);

1 个答案:

答案 0 :(得分:-1)

我没有使用方法创建密钥,而是使用了firebase的push方法,允许您创建随机密钥节点:

private void createBook(String nom_livre,String cat_selected, String type_annonce_selected ) {

    bookInfos=new Book(nom_livre,cat_selected,type_annonce_selected);

        myRefBook.push().setValue(bookInfos);

}

我使用orderByKey()dataSnap.getKey()来显示最后一个键:

  ref.orderByKey().limitToFirst(2).addListenerForSingleValueEvent(new ValueEventListener() {
                @Override
                public void onDataChange(DataSnapshot dataSnapshot) {

                     List<String> list = new ArrayList<String>();
                    for (DataSnapshot dataSnap : dataSnapshot.getChildren()) {

                        Book valueBook = dataSnap.getValue(Book.class);
                        keyId = dataSnap.getKey();

                        String titreLivreToDisplay = valueBook.getNom_livre();
                        String descLivreToDisplay = valueBook.getDesc_livre();

                       //Do what you want with the key Node

                  }}  });