首页 > 解决方案 > 使用 Firebase 中的键显示特定数据

问题描述

我是 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="..."}

我想要的结果只是名称和优先级

{ 消息 = "..",name=".."}

有没有办法指定检索数据的路径?

标签: javaandroidfirebasefirebase-realtime-database

解决方案


为什么不首先将 JSON 解析为一个对象,然后只使用所需的参数。对于解析,您可以使用 SimpleJSON 库。


推荐阅读