2017-01-30 39 views
-3

我是Firebase和Android的初學者。我的問題是搜索特定的密鑰並檢查它是否存在。當它存在時,我將該密鑰的URL值顯示給用戶。 所有這些都應該在數據庫沒有任何改變的情況下發生。在所有Firebase數據庫中查詢特定密鑰並獲取它的子值Android

那我該怎麼辦?謝謝。

這裏是我的數據庫結構:

{ 
    "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)); 
      } 
     }); 

    } 


} 
+0

你的問題很不清楚。您是否在特定位置搜索確切的值,或者搜索整個數據庫的一般文本?你試過什麼了?請包括您的任何相關代碼以及數據作爲純文本而不是圖像。 –

+0

對不起,我會更新我的問題是清楚的,我沒有附加任何代碼,因爲我不知道該怎麼做後我的數據庫的參考。 是的,我想搜索關於確切的關鍵,例如妹妹,當我發現它我應該採取的價值,並顯示給用戶,我希望明確 –

+0

這將有助於包括所有相關的代碼,示例數據,調試日誌記錄和版本信息,以便我們可以完全理解問題。請參閱[如何提問](http://stackoverflow.com/help/how-to-ask)和[創建mcve](http://stackoverflow.com/help/mcve)。 – Kato

回答

0

Mainactivity:

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; 
    } 
} 
相關問題