【问题标题】:Querying in all Firebase database about a specific key and get it's children value Android在所有 Firebase 数据库中查询特定键并获取其子值 Android
【发布时间】:2017-01-30 21:48:49
【问题描述】:

我是 Firebase 和 Android 的初学者。我的问题是搜索特定键并检查它是否存在。当它存在时,我获取该键的 URL 值并将其显示给用户。 所有这些都应该在数据库中没有任何更改的情况下发生。

那我该怎么办?谢谢。

这是我的数据库结构:

{
  "images" : {
    "partner " : {
      "text" : "partner",
      "url" : "http://res.cloudinary.com/dg3jylcsw/image/upload/v1483565650/sister_x3lv6j.png"
    },
    "sister" : {
      "text " : "sister",
      "url" : "http://res.cloudinary.com/dg3jylcsw/image/upload/v1483565650/sister_x3lv6j.png"
    }
  }
}

我的代码:

package com.example.android.testy;
import android.support.v7.app.AppCompatActivity;
import android.os.Bundle;
import android.view.View;
import android.widget.Button;
import android.widget.EditText;

import com.firebase.client.Firebase;
import com.firebase.client.Query;

public class MainActivity extends AppCompatActivity {

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);
        Firebase.setAndroidContext(this);

        Button bt = (Button)findViewById(R.id.button);
        bt.setOnClickListener(new View.OnClickListener() {
            public void onClick(View v) {
                EditText input = (EditText) findViewById(R.id.editText);
                String string = input.getText().toString();
                Firebase rootRef = new Firebase("https://test-219f8.firebaseio.com/images");
                Query queryRef = rootRef.orderByKey().equalTo(String.valueOf(input));
            }
        });

    }


}

【问题讨论】:

  • 你的问题很不清楚。您是在特定位置搜索精确值,还是对整个数据库进行一般文本搜索?你试过什么了?请将您拥有的任何相关代码和数据作为纯文本而不是图像提供。
  • 对不起,我会更新我的问题以明确,我没有附加任何代码,因为我不知道在引用我的数据库后该怎么做。是的,我想搜索确切的键,例如姐姐,当我找到它时,我应该获取 url 值并将其显示给用户我希望清楚
  • 这将有助于包含所有相关代码、示例数据、调试日志记录和版本信息,以便我们能够完全理解问题。见how to askcreating an mcve
  • 我希望现在已经足够清楚了:D
  • 使用 GSon 将 JSON 字符串反序列化到您的模型中,然后您可以检查它是否为空/空

标签: android firebase firebase-realtime-database


【解决方案1】:

主要活动:

package com.example.android.testy;

import android.support.v7.app.AppCompatActivity;
import android.os.Bundle;

import com.firebase.client.ChildEventListener;
import com.firebase.client.DataSnapshot;
import com.firebase.client.Firebase;
import com.firebase.client.FirebaseError;
import com.firebase.client.Query;
import com.firebase.client.ValueEventListener;

public class MainActivity extends AppCompatActivity {

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);
        Firebase.setAndroidContext(this);

        Firebase rootRef = new Firebase("https://test-219f8.firebaseio.com/images");
        Query queryRef = rootRef.orderByKey().equalTo("sister");
        queryRef.addChildEventListener(new ChildEventListener() {
            @Override
            public void onChildAdded(DataSnapshot dataSnapshot, String s) {
                test data = dataSnapshot.getValue(test.class);

                System.out.println(data.getUrl());
            }

            @Override
            public void onChildChanged(DataSnapshot dataSnapshot, String s) {

            }

            @Override
            public void onChildRemoved(DataSnapshot dataSnapshot) {

            }

            @Override
            public void onChildMoved(DataSnapshot dataSnapshot, String s) {

            }

            @Override
            public void onCancelled(FirebaseError firebaseError) {

            }
        });

    }


}

该测试类包括我们想要从特定关键子项中检索的内容

测试类:

package com.example.android.testy;

import com.fasterxml.jackson.annotation.JsonIgnoreProperties;

@JsonIgnoreProperties(ignoreUnknown=true)
public class test {
    private String text;
    private String url;

    public test() {
        // empty default constructor, necessary for Firebase to be able to deserialize blog posts
    }
    public String getText() {
        return text;
    }

    public String getUrl() {
        return url;
    }
}

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2018-07-31
    • 1970-01-01
    • 2023-03-22
    • 1970-01-01
    • 2021-12-15
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多