Java 如何检查firebase数据库中2个随机键内的值?
我有一个字符串键值,需要用数据库中的一个键进行检查。如果这两个键相等,我需要执行某些操作。我一直在尝试循环通过2个随机键,但它就是不起作用。请帮忙Java 如何检查firebase数据库中2个随机键内的值?,java,android,firebase,firebase-realtime-database,Java,Android,Firebase,Firebase Realtime Database,我有一个字符串键值,需要用数据库中的一个键进行检查。如果这两个键相等,我需要执行某些操作。我一直在尝试循环通过2个随机键,但它就是不起作用。请帮忙 dataref = FirebaseDatabase.getInstance().getReference("Users"); @Override public void onDeleteClick(int position) { Upload selectedItem = mUploads.get(position); fi
dataref = FirebaseDatabase.getInstance().getReference("Users");
@Override
public void onDeleteClick(int position) {
Upload selectedItem = mUploads.get(position);
final String selectedKey = selectedItem.getKey();
StorageReference imageRef = mStorage.getReferenceFromUrl(selectedItem.getImageUrl());
imageRef.delete().addOnSuccessListener(new OnSuccessListener<Void>() {
@Override
public void onSuccess(Void aVoid) {
dataref.addValueEventListener(new ValueEventListener() {
@Override
public void onDataChange(DataSnapshot dataSnapshot) {
for (DataSnapshot ds : dataSnapshot.getChildren()) {
for (DataSnapshot ds2 : ds.child("uploads").getChildren()){
String imgkey = (String) ds2.getKey();
if (imgkey.equals(selectedKey)){
Toast.makeText(ViewSellerProduct.this, "Item Removed", Toast.LENGTH_SHORT).show();
int num = (int) ds.child("sold").getValue();
ds.child("sold").getRef().setValue(num +1);
int num1 = (int) ds.child("points").getValue();
ds.child("points").getRef().setValue(num1 + 50);
}
}
}
}
@Override
public void onCancelled(DatabaseError databaseError) {
Toast.makeText(ViewSellerProduct.this, databaseError.getMessage(), Toast.LENGTH_SHORT).show();
mProgressCircle.setVisibility(View.INVISIBLE);
}
});
mDatabaseRef.child(selectedKey).removeValue();
mmDatabaseRef.child(selectedKey).removeValue();
}
});
}
基本上我想增加销售1点和50点时,删除点击
请注意,我无法获取当前用户ID,因为该用户将作为另一个帐户登录
打印IMGKEY和SLECTEDKEY的输出:
2019-05-25 23:22:21.279 2450-2450/com.example.re I/System.out:
imgkey=-LffFH8AMu_71RFeaHup
2019-05-25 23:22:21.280 2450-2450/com.example.re
I/System.out: slectedkey = -LfkRLtEiWCyqz51oSY2
2019-05-25 23:22:21.281 2450-2450/com.example.re I/System.out:
imgkey=-LfiHUz4wwrt0IT1tPM4
2019-05-25 23:22:21.281 2450-2450/com.example.re I/System.out:
slectedkey = -LfkRLtEiWCyqz51oSY2
乍一看,代码看起来不错。但在这段代码中我们肯定看不到一些东西。如果(imgkey.equals(selectedKey)),您能在这一行前面打印
imgkey
和selectedKey
吗{,然后将输出添加到您的问题中?@FrankvanPuffelen好的,我得到了这些输出。它似乎打印了两次。第一个imgkeyvalue来自前一个用户上传的随机键。公平地说,我已经得出结论,它检查/循环了所选键之前的每个键。但出于某种原因,它没有与la进行检查需要st键,即selectedkey.UPDATE:如果条件从我第二次单击“删除”时开始工作。这意味着“售出”和“积分”值分别递增。这似乎不是每次应用程序重新启动时都只在第一次删除时发生。乍一看,代码看起来不错。但肯定有一些东西我们在这方面看不到s代码。如果(imgkey.equals(selectedKey))在这一行的正前方,是否可以打印imgkey
和selectedKey
{,然后将输出添加到您的问题中?@FrankvanPuffelen好的,我得到了这些输出。它似乎打印了两次。第一个imgkeyvalue来自前一个用户上传的随机键。公平地说,我已经得出结论,它检查/循环了所选键之前的每个键。但出于某种原因,它没有与la进行检查需要st key,即selectedkey.UPDATE:如果条件从我第二次单击“删除”开始起作用。这意味着“售出”和“积分”值分别递增。这似乎不是每次应用程序重新启动时仅在第一次删除时发生
2019-05-25 23:22:21.279 2450-2450/com.example.re I/System.out:
imgkey=-LffFH8AMu_71RFeaHup
2019-05-25 23:22:21.280 2450-2450/com.example.re
I/System.out: slectedkey = -LfkRLtEiWCyqz51oSY2
2019-05-25 23:22:21.281 2450-2450/com.example.re I/System.out:
imgkey=-LfiHUz4wwrt0IT1tPM4
2019-05-25 23:22:21.281 2450-2450/com.example.re I/System.out:
slectedkey = -LfkRLtEiWCyqz51oSY2