我想获取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) {
}
});
一开始我只有书1,点击了addbook按钮后我有了book2但是当我试图第三次添加一本书时,之前的book2值崩溃了,新的那些在Book2上添加了地点。
我正在使用idBook
在Firebase数据库中创建节点簿
myRefBook.child(idBook).setValue(bookInfos);
答案 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
}} });