如何从Android客户端自动增加存储在Firebase中的值?
目前:我宣布int id = 1.当我递增时,我看到存储的值2,3等.那没关系,但是当我重新运行项目时,id再次设置为1.
我希望它表现得像一个静态变量,所以我可以创建一个从1到无穷大而不重置的id.
更新失败
我使用以下内容将Firebase引用和字符串传递给函数incrementCounter.
if(language_chosen.equalsIgnoreCase("english"))
{
Firebase publRef = f.child("Language").child("English").child("Message");
Firebase newPublRef = publRef.push();
writeMsgActivity demo = new writeMsgActivity();
demo.incrementCounter(newPublRef,the_msg_enter);
}
Run Code Online (Sandbox Code Playgroud)
现在我尝试public void incrementCounter(Firebase publref,String my_msg)在oncomplete方法中使用传递的引用和字符串, 但它给了我一个错误.
public void incrementCounter(Firebase publref,String my_msg) {
publref.runTransaction(new Transaction.Handler() {
@Override
public Transaction.Result doTransaction(final MutableData currentData) {
if (currentData.getValue() == null) {
currentData.setValue(1);
} else {
currentData.setValue((Long) currentData.getValue() + 1);
}
return Transaction.success(currentData);
}
public void onComplete(FirebaseError firebaseError, boolean committed, DataSnapshot currentData) {
if …Run Code Online (Sandbox Code Playgroud) java android auto-increment firebase firebase-realtime-database
我正在尝试用Java计算我的firebase数据库中的所有值.但它不起作用,我已经看了一些教程,但没有找到任何Java程序员.
这是我的数据库:
Language
German
Message
-Jf6ShYy7niHrqg_x4Tc: "Tomorrow is very windy"
-Jf9v0xHAxINUUANrORU: "Today is very windy and rainy"
Run Code Online (Sandbox Code Playgroud)
这是我的代码,请注意我尝试使用count max value的行:
Firebase f = new Firebase("https://myapp.firebaseio.com/Language/German/Message/");
f.addValueEventListener(new ValueEventListener() {
public void onDataChange(DataSnapshot snapshot) {
disp_msg = (TextView)findViewById(R.id.display_msg);
//disp_msg.setText(snapshot.getValue().toString());
Iterable<DataSnapshot> ds = snapshot.getChildren();
Iterator<DataSnapshot> ids = ds.iterator();
Map<String, Object> newPost = (Map<String, Object>) ids.next().getValue();
String msg = newPost.get("pubMsg").toString();
disp_msg.setText(msg.toString());
//The line below does not work getting the maximum values
int maxValueInMap=(Collections.max(newPost.values().toString()));
}
Run Code Online (Sandbox Code Playgroud)
这是我在Collections的max函数中得到的错误:
类型集合中的方法max(Collection)不适用于参数(String)
有谁知道如何用Java解决这个问题,提前谢谢.
我想检查 firebase 数据库中是否存在密钥。例如,我想查找关键的“upvotes”以查看它是否存在。
这是一个例子,这里不存在“upvotes”键:

现在我尝试检查关键的“upvotes”是否在这个位置:
Map<String, Object> newPost = (Map<String, Object>) ids.next().getValue();
if(newPost.get("upvotes").toString().equals("upvotes")){
disp_rate = newPost.get("upvotes").toString();
}
else
{
disp_rate = "0";
}
Run Code Online (Sandbox Code Playgroud)
我的尝试是错误的,所以我如何检查该位置是否存在关键的“upvotes”。
我在Android上访问Firebase.我想从树中检索一个孩子.我的代码是(更新的)
f.child("Germany").child("Username").child("Alan Turing").addChildEventListener(new ChildEventListener() {
// Retrieve new posts as they are added to Firebase
@Override
public void onChildAdded(DataSnapshot snapshot, String previousChildKey) {
Map<String, Object> newPost = (Map<String, Object>) snapshot.getValue();
System.out.println("Author: " + newPost.get("Message"));
disp_msg = (TextView)findViewById(R.id.display_msg);
disp_msg.setText(newPost.get("Message").toString());
// System.out.println("Title: " + newPost.get("title"));
}
Run Code Online (Sandbox Code Playgroud)
在我的火力基础上,我有
Language
Germany
Username
Alan Turing
Message
-Jf6ShYy7niHrqg_x4Tc: "tom"
-Jf9v0xHAxINUUANrORU: "perfect"
Run Code Online (Sandbox Code Playgroud)
当我运行上面的代码时,我得到:
Author: {
Username={
Alan Turing={
Message={
-Jf6ShYy7niHrqg_x4Tc=tom,
-Jf9v0xHAxINUUANrORU=perfect!
}
}
}
}
Run Code Online (Sandbox Code Playgroud)
但我只想要消息,而不是整个Firebase数据库.
那么我该如何获得指定的孩子呢?
只有这个工作到目前为止,但它返回整个firebase:
f.addChildEventListener(new ChildEventListener() {
// Retrieve new posts as they …Run Code Online (Sandbox Code Playgroud) 我想摆脱列表中的所有元组,例如.
我有这样的东西作为输入
test:stack({push, [{{mul,{plus,{num,2},{num,3}},{num,4}},[]}]}, []).
%% note: (returns wrong output because of the multiple tuples brackets)
Run Code Online (Sandbox Code Playgroud)
如果我有这样的事情:
proj:stack({push, [mul,plus,{num,2},{num,3},{num,4}]}, []).
%% this would return:
%% [{push,{num,4}},{push,{num,3}},{push,{num,2}},
%% {push,plus},{push,mul}]
%% This is near to what I need.
Run Code Online (Sandbox Code Playgroud)
我的代码是这样的:
stack({push, []}, StackList) -> StackList;
stack({push,[H|T]}, StackList) ->
stack({push, T}, [{push,H} | StackList]).
Run Code Online (Sandbox Code Playgroud)
我希望实现这样的目标:
{push, {num, 4}}, {push, {num, 3}},
{push, {num, 2}}, {add}, {mul}, {pop}, {ret}
Run Code Online (Sandbox Code Playgroud)
我想过使用过滤器来实现这个目标,但也许是其他的东西?