Java 如何检查firebase数据库中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

我有一个字符串键值,需要用数据库中的一个键进行检查。如果这两个键相等,我需要执行某些操作。我一直在尝试循环通过2个随机键,但它就是不起作用。请帮忙

 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