我正在尝试查找是否有办法知道Firebase实时数据库中是否有提取的数据。
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
// ARRAY
accountList = new ArrayList<>();
// Assigning Object to Controls (bullshit)
textboxUser = (TextView) findViewById(R.id.textBoxUsername);
textboxPass = (TextView) findViewById(R.id.textBoxPassword);
buttonEnter = (Button) findViewById(R.id.buttonEnter);
postRef = FirebaseDatabase.getInstance().getReference("account");
dataRefaccount = FirebaseDatabase.getInstance().getReference("account");
// OnClick Method Button
buttonEnter.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
try {
username = textboxUser.getText().toString();
Query query = FirebaseDatabase.getInstance().getReference("account").orderByChild("username").equalTo(username);
query.addListenerForSingleValueEvent(valueEventListener);
} catch (Exception e) {
e.printStackTrace();
} finally {
Toast.makeText(getApplicationContext(), getted, Toast.LENGTH_LONG).show();
}
}
});
}
ValueEventListener valueEventListener = new ValueEventListener() {
@Override
public void onDataChange(DataSnapshot dataSnapshot) {
for (DataSnapshot data : dataSnapshot.getChildren()) {
if (data.child(username).exists()) {
getted = "yes";
} else {
getted = "No";
}
}
}
@Override
public void onCancelled(DatabaseError databaseError) {
Toast.makeText(getApplicationContext(), "error", Toast.LENGTH_LONG).show();
}
};
吸气剂始终为“否”。
最佳答案
您应该尝试一下。首先,请确保您在查询响应中没有收到任何错误。
Query query = FirebaseDatabase.getInstance().getReference().child("account").orderByChild("username").equalTo(username);
ValueEventListener valueEventListener = new ValueEventListener() {
@Override
public void onDataChange(DataSnapshot dataSnapshot) {
if (dataSnapshot.getValue() != null && dataSnapshot.getChildrenCount() > 0) {
for (DataSnapshot data : dataSnapshot.getChildren()) {
// I'm sure you are looking for below line.. Go and try this.
if (data.child("username").getValue().toString().equal(username) ) {
getted = "yes";
break;
} else {
getted = "No";
}
}
} else {
getted = No value available;
}
Toast.makeText(getApplicationContext(), "getted : " + getted, Toast.LENGTH_LONG).show();
}
@Override
public void onCancelled(DatabaseError databaseError) {
Toast.makeText(getApplicationContext(), "error", Toast.LENGTH_LONG).show();
}
};
仅供参考:Firebase调用是异步调用,因此单击按钮的finally子句将始终在firebase响应之前执行。因此,尝试从此处删除try-catch并使用上面的代码打印获取的值。