Firebase android:在按钮点击时检索并检查数据库的条目

时间:2017-11-03 22:55:03

标签: android firebase firebase-realtime-database

我是Android和Firebase编程的新手。我只是建立一个小应用程序,它到目前为止工作正常。但是当谈到Firebase连接时,我正在努力。 我遵循了所有基本步骤,尝试了很多,但无法弄明白。

所以我的问题:我有一个数据库,它存储ID:ID - > 12345,23458,...,这些ID有多个子级(实际上是其他ID:ID - > 23456 - > 23456-ValueA,23456-ValueB,...)。我想做什么:

  1. 如果单击一个按钮,应用程序会检查先前输入的字符串是否为ID的子项,因此如果 enteredstring 与任何IDx匹配(例如用户输入ValueX(" 23456&#) 34;)它检查ID'等于23456)
  2. 的任何孩子
  3. 如果是这样,它应检查另一个先前输入的字符串是否是此IDx的子项(用户输入ValueY(" 88888")检查23456 Value-A(" 88888")是否等于VALUE年)。
  4. 如果是这样,那么它应该显示Value-B的值(" Ape")
  5. 我将数据库附加为图片。link to the image

    感谢您的帮助,非常感谢 干杯

    ...
    public class trackid extends AppCompatActivity {
    
    DatabaseReference rootRef = FirebaseDatabase.getInstance().getReference();
    DatabaseReference IDRef = rootRef.child("ID");
    
    @Override
    public void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_trackid);
    
                // findViewById
                Button ButtondisplayB = (Button) findViewById(R.id.ButtondisplayB);
                EditText ValueX = (EditText) findViewById(R.id.ValueX);
                EditText ValueY = (EditText) findViewById(R.id.ValueY);
    
                // Capture if button is clicked
                ButtondisplayB.setOnClickListener(new View.OnClickListener() {
                    public void onClick(View v) {
    
                        // HERES WHERE MY QUESTIONS START:
                        // if ValueX.getText().toString() is in IDRef.child()
                            //if true: ValueY.getText().toString() equals IDRef.child(ValueX).child(Value-A)
                                //if true: display IDRef.child(Value-B)
    

1 个答案:

答案 0 :(得分:1)

IDRef.child(ValueX.getText().toString())addListenerForSingleValueEvent(new com.google.firebase.database.ValueEventListener() {
        @Override
        public void onDataChange(com.google.firebase.database.DataSnapshot dataSnapshot) {

            if(!dataSnapshot.exists()){
                Log.d("Missing","This id is not present in the database");
            }else{
                String aFromDb = dataSnapshot.child("A-value").getValue(String.class);
                if(ValueY.getText().toString.equals(aFromDb)){
                    String bFromDb = dataSnapshot.child("B-value").getValue(String.class);
                    Log.d("B value is:",bFromDb)''
                }else{
                    Log.d("not equal","A value not equal to ValueY");
                }
            }
        }

        @Override
        public void onCancelled(DatabaseError databaseError) {

            Log.d("Error",".....");
        }
    });

您可以将ListenerForSingleValueEvent更改为ValueEventListener。 ListenerForSingleValueEvent只检查一次数据库。