【发布时间】:2019-03-21 07:20:08
【问题描述】:
我是 android 开发和 firebase 的新手,所以这可能是一个简单的问题。
我想开发一个与 firebase 中的 grandChild 中的名称匹配的应用程序,然后获取它周围的键的数据,但问题是当我检索数据时,它会获取数据库中所有子节点的值。
这是我完成的代码
private void searchText() {
final String mSearch = searchBar.getText().toString();
//return REQUIRED if the searchBar is in filled
if (TextUtils.isEmpty(mSearch)) {
searchBar.setError(REQUIRED);
return;
}
ValueEventListener valueEventListener = mDatabase.addValueEventListener(new ValueEventListener() {
@Override
public void onDataChange(DataSnapshot dataSnapshot) {
for (DataSnapshot child : dataSnapshot.getChildren()){
for (DataSnapshot grandChild : child.getChildren()) {
//check if mSearch is equal any grandchild in the firebase'
if(grandChild.getValue().toString().equals(mSearch)){
TextView mText = findViewById(R.id.searchResult);
String string = child.getValue().toString();
String string2 = string.replace("{","");
String string3 = string2.replace("}","");
String string4 = string3.replace(",","\n");
//retrieve the data from firebase and show in TextView
mText.setText(string4);
}
}
}
}
@Override
public void onCancelled(DatabaseError databaseError) {
}
});
mDatabase.addValueEventListener(valueEventListener);
}
结果是
{ Message = "...",Priority = "..",name="...",time="..."}
但我想要的结果是只有名称和优先级
{ Message = "..",name=".."}
有没有办法指定检索数据的路径?
【问题讨论】:
-
这就像我必须在编辑文本上输入名称,它会与 grandChild (在这种情况下是“aa”)如果它相等,我希望我的应用程序只显示textView 上的消息和名称
标签: java android firebase firebase-realtime-database