【发布时间】:2017-06-30 06:28:14
【问题描述】:
我正在使用 firebase 保存数据,但在通过 Firebase 的密钥返回数据时遇到了一些问题 简而言之,这是我的 firebase 页面:
this is my firebase page 首先我没有使用 Query,它确实有效,但是使用 Query,它更灵活一些,所以我尝试这样做,但它没有用 所以这是我的代码,我希望你能帮助我
firebaseDatabase = FirebaseDatabase.getInstance().getReference("Objects");
Query query = firebaseDatabase.child("Users").child(key//key is a string value entered by the user ).orderByChild("name").equalTo(name//the name the user is searching for );
query.addValueEventListener(new ValueEventListener() {
@Override
public void onDataChange(DataSnapshot dataSnapshot) {
if (dataSnapshot!=null) {
for (DataSnapshot datasnapshot : dataSnapshot.getChildren()) {
if (datasnapshot!=null) {
textView.setText(dataSnapshot.child(key).getValue(Artest.class).getName());
editText.setText("");
}
Toast.makeText(SearchByKey.this, "in the for loop there was null", Toast.LENGTH_LONG).show();
textView2.setText("null....");
}
}
else{
Toast.makeText(SearchByKey.this, "dataSnapshot was null", Toast.LENGTH_LONG).show();
textView2.setText("null");
}
}
@Override
public void onCancelled(DatabaseError databaseError) {
throw databaseError.toException();
}`
此代码有效,但不涉及使用查询
String keyy= editText.getText().toString();
firebaseDatabase.child("users").child(keyy).addValueEventListener(new
ValueEventListener() {
public void onDataChange(DataSnapshot dataSnapshot) {
if (dataSnapshot == null ) {
Toast.makeText(SearchByKey.this, "dataSnapshot was null",
Toast.LENGTH_LONG).show(); }
if (dataSnapshot.getKey().equalsIgnoreCase(keyy)){
textView.setText(dataSnapshot.getValue(Artest.class).getName());
textView2.setText(dataSnapshot.getValue(Artest.class).getGoal());
editText.setText(""); }
else {
Toast.makeText(SearchByKey.this, "make sure you entered the right
key , try again ", Toast.LENGTH_LONG).show();
editText.setText(""); }
}
public void onCancelled(DatabaseError databaseError)
{
}
嘿,这就是我设法解决这个问题的方法 首先,我只根据键进行搜索, 我拍摄了完整用户的快照... 简而言之,这是代码给了我一个完美的输出:
firebaseDatabase= FirebaseDatabase.getInstance().getReference("Objects");
final String keyy= editTextart.getText().toString();
Query query = firebaseDatabase.child("users");
query.addValueEventListener(new ValueEventListener() {
@Override
public void onDataChange(DataSnapshot dataSnapshot) {
if (dataSnapshot == null) {
Toast.makeText(Search.this, "dataSnapshot was null", Toast.LENGTH_LONG).show();
} else {
textView.setText(dataSnapshot.child(keyy).getValue(Artest.class).getName());
textView2.setText(dataSnapshot.child(keyy).getValue(Artest.class).getGoal());
editTextart.setText("");
}
}
希望它可以帮助某人:)
【问题讨论】:
-
请添加
firebaseDatabase的声明 -
完成,感谢您的清理。
标签: android database firebase firebase-realtime-database