【问题标题】:Return boolean if key exist in Firebase Database Android如果 Firebase 数据库 Android 中存在密钥,则返回布尔值
【发布时间】:2017-06-22 19:56:31
【问题描述】:

检查密钥是否存在的方法

我想创建一个检查方法,如果存在则返回 true,如果不存在则返回 false。

数据库结构:

{
  "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 android.widget.TextView;

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;

import java.util.ArrayList;
import java.util.Arrays;

public class MainActivity extends AppCompatActivity {


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

       final EditText edittext = (EditText)findViewById(R.id.editText);
      final  TextView text = (TextView) findViewById(R.id.textView);
        Button bt = (Button) findViewById(R.id.button);
        String s;
        bt.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View v) {
                final String s = edittext.getText().toString();
                ArrayList<String> data = new ArrayList<String>(Arrays.asList(s.split(" ")));
                text.setText(s);


                String temp = (String) data.get(0);
                boolean h = MainActivity.check(temp);



            }
        });




    }
public static boolean check(String test){

        Firebase rootRef = new Firebase("https://test-219f8.firebaseio.com/images");
        final Query queryRef = rootRef.orderByKey().equalTo(test);
        queryRef.addValueEventListener(new ValueEventListener() {
            @Override
            public void onDataChange(DataSnapshot dataSnapshot) {
                if (dataSnapshot.exists()){



                }else{


                }
            }

            @Override
            public void onCancelled(FirebaseError firebaseError) {
                System.out.println("not exist");

            }
        });
        return ?;
    }

【问题讨论】:

  • 如果不阻塞主线程就无法做到这一点,这在 Android 中是一件坏事。一般来说,您不应该将您的应用程序设计为期望从 Firebase 同步数据。所有数据访问都应通过回调/侦听器异步管理。

标签: android firebase firebase-realtime-database


【解决方案1】:

你只需要使用这个布尔函数 containsKey

boolean check_rate = newPost.containsKey("mykey");

if(check_rate == true){
                String disp_rate = newPost.get("mykey").toString();
                rate_count.setText(disp_rate);
            }
            else{
                System.out.println("FAILED");
            }

【讨论】:

    【解决方案2】:

    if (datasnapshat.haschild("KEYNAME"))

    {

     //DO stuffs
    

    }

    否则 {

    }

    【讨论】:

      猜你喜欢
      • 2018-04-23
      • 2023-03-28
      • 1970-01-01
      • 2014-02-07
      • 2019-10-07
      • 1970-01-01
      • 2021-04-07
      • 1970-01-01
      • 2021-01-07
      相关资源
      最近更新 更多