【问题标题】:Firebase android: Retrieving and checking entry to database on button clickFirebase android:在按钮单击时检索和检查数据库条目
【发布时间】:2018-04-16 18:12:41
【问题描述】:

我是 Android 和 Firebase 编程的新手。我只是在构建一个小应用程序,到目前为止它运行良好。但是当涉及到 Firebase 连接时,我正在苦苦挣扎。 我遵循了所有的基本步骤并尝试了很多但无法弄清楚。

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

  1. 如果单击按钮,应用程序会检查先前输入的字符串是否是 ID 的子字符串,因此如果 enteredstring 匹配任何 IDx(例如用户输入 ValueX("23456"),它会检查ID'的任何孩子是否等于23456)
  2. 如果是,它应该检查另一个先前输入的字符串是否是此 IDx 的子字符串(用户输入 ValueY("88888") 检查 23456 Value-A("88888") 是否等于 ValueY)。
  3. 如果这是真的,那么它应该显示 Value-B("Ape") 的值

我附上了数据库图片。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)

【问题讨论】:

    标签: android firebase firebase-realtime-database


    【解决方案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 只检查一次数据库。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2020-09-25
      • 1970-01-01
      • 2016-11-16
      • 1970-01-01
      相关资源
      最近更新 更多