在所有Firebase数据库中查询特定密钥并获取它';s儿童重视Android
我是Firebase和Android的初学者。我的问题是搜索特定的键并检查它是否存在。当它存在时,我获取该键的URL值并将其显示给用户。 所有这些都应该在数据库中没有任何更改的情况下发生 那我该怎么办?谢谢 以下是我的数据库结构:在所有Firebase数据库中查询特定密钥并获取它';s儿童重视Android,android,firebase,firebase-realtime-database,Android,Firebase,Firebase Realtime Database,我是Firebase和Android的初学者。我的问题是搜索特定的键并检查它是否存在。当它存在时,我获取该键的URL值并将其显示给用户。 所有这些都应该在数据库中没有任何更改的情况下发生 那我该怎么办?谢谢 以下是我的数据库结构: { "images" : { "partner " : { "text" : "partner", "url" : "http://res.cloudinary.com/dg3jylcsw/image/upload/v1483565
{
"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));
}
});
}
}
主要活动:
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;
}
}
你的问题很不清楚。您是在特定位置搜索精确值,还是对整个数据库进行常规文本搜索?到目前为止你试过什么?请将所有相关代码和数据以纯文本而不是图像的形式包含在内。很抱歉,我将更新我的问题以澄清问题,我没有附加任何代码,因为我不知道在引用我的数据库后要做什么。是的,我想搜索确切的密钥,例如,sister,当我找到它时,我应该获取url值并将其显示给用户,我希望是Clear,它将有助于包括所有相关代码、示例数据、调试日志和版本信息,以便我们能够完全理解问题。请参阅和。我希望现在已经足够清楚:DUse GSon将JSON字符串反序列化到您的模型中,然后您可以检查它是否为null/空