【问题标题】:Adding form data to firebase database将表单数据添加到 Firebase 数据库
【发布时间】:2017-07-18 21:40:07
【问题描述】:

我对编码完全陌生。我正在尝试使用层次结构将数据保存到 firebase 数据库:作业 ID(作业 1、作业 2 等)-> 作业参数(日期、优先级等)

这是我使用的表格:

这是我原始代码中的 Firebase 层次结构

这是我的代码:

package com.example.myname.todo;

import android.support.v7.app.AppCompatActivity;
import android.os.Bundle;
import android.view.View;
import android.widget.Button;
import android.widget.EditText;

import com.google.firebase.database.DatabaseReference;
import com.google.firebase.database.FirebaseDatabase;

public class JobForm extends AppCompatActivity {

@Override
protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.activity_job_form);

    // Connect to the Firebase database
    FirebaseDatabase database = FirebaseDatabase.getInstance();
    // Add items via the Button and EditText at the bottom of the window.
    final EditText jobNum = (EditText) findViewById(R.id.job_id);
    final EditText jobDate = (EditText) findViewById(R.id.date_now);
    final EditText jobPri = (EditText) findViewById(R.id.job_imp);
    final EditText jobDeet = (EditText) findViewById(R.id.job_dis);
    final EditText jobMch1 = (EditText) findViewById(R.id.first_machine);
    final EditText jobMch2 = (EditText) findViewById(R.id.second_machine);
    // Get a reference to the child items it the database


    final DatabaseReference jobID = database.getReference("Job_ID");
    final DatabaseReference dateStart = database.getReference("Start_Date");
    final DatabaseReference jobImp = database.getReference("Job_Priority");
    final DatabaseReference jobDes = database.getReference("Job_Description");
    final DatabaseReference jobMach1 = database.getReference("First_Machine");
    final DatabaseReference jobMach2 = database.getReference("Second_Machine");



    final Button but_sub = (Button) findViewById(R.id.but_sub);

    but_sub.setOnClickListener(new View.OnClickListener() {
        public void onClick(View v) {

            // Create a new child with a auto-generated ID.
            DatabaseReference childRef = jobID.push();
            // Set the child's data to the value passed in from the text box.
            childRef.setValue(jobNum.getText().toString());
            DatabaseReference childRef2 = dateStart.push();
            childRef2.setValue(jobDate.getText().toString());
            DatabaseReference childRef3 = jobImp.push();
            childRef3.setValue(jobPri.getText().toString());
            DatabaseReference childRef4 = jobDes.push();
            childRef4.setValue(jobDeet.getText().toString());
            DatabaseReference childRef5 = jobMach1.push();
            childRef5.setValue(jobMch1.getText().toString());
            DatabaseReference childRef6 = jobMach2.push();
            childRef6.setValue(jobMch2.getText().toString());
        }
    });


}

}

我想知道该怎么做,以便用户输入的每个作业在数据库中创建一个 Child 及其特定信息。比如:

  • Job1(工作 1 信息,展开后)
  • job2(展开后的工作 2 信息)

谢谢

【问题讨论】:

    标签: android firebase firebase-realtime-database


    【解决方案1】:

    好吧,在我看来,您在学习 firebase 或 Firebase 如何工作时搞砸了,您不需要每次都声明 DatabaseReference,您只需为一张表调用一次。看到这个:

    final EditText jobNum = (EditText) findViewById(R.id.job_id);
    final EditText jobDate = (EditText) findViewById(R.id.date_now);
    final EditText jobPri = (EditText) findViewById(R.id.job_imp);
    final EditText jobDeet = (EditText) findViewById(R.id.job_dis);
    final EditText jobMch1 = (EditText) findViewById(R.id.first_machine);
    final EditText jobMch2 = (EditText) findViewById(R.id.second_machine);
    // Get a reference to the child items it the database
    
    
    final DatabaseReference job = database.getReference("JOBS");
    final Button but_sub = (Button) findViewById(R.id.but_sub);\`but_sub.setOnClickListener(new View.OnClickListener() {
        public void onClick(View v) {
           // you must creat a job class 
           // asumming you did it will have the toString()method in ever parmeteter in the constracter 
           Job job = new Job(jobNum.getText().toString(),...exc);
           job.child(jobNum).setValue(job);
    

    // 现在您的 Firebase 数据库中应该有一个名为 job 的节点,它的键是 jobNum,值是 job。

        }
    });
    
    
      }`
    

    希望它有所帮助:)

    【讨论】:

    • 感谢您的回复,当我有机会实施更改时,我会向您更新结果
    • 效果很好,感谢您的帮助! . ps 如果我想添加更多节点,我只需要创建另一个类吗?
    • 很高兴听到它有效,如果您需要为同一类创建其他节点,只需使用 DatabaseReference job', if it was for a different class just defined a new DatabaseReference '
    猜你喜欢
    • 2019-10-19
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2023-03-06
    • 1970-01-01
    • 2017-12-28
    • 1970-01-01
    • 2017-03-10
    相关资源
    最近更新 更多