2017-07-18 84 views
-2

我完全不熟悉编码。我想数据火力数据库层次结构保存:作业ID(作业1,作业2,等) - >作业参数(如日期,优先级等)将表单数据添加到firebase数据库

这是我使用的形式:

submission form

这是我的火力层次从我的原代码

firebase structure

这是我的代码:

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()); 
     } 
    }); 


} 

}

我想知道该怎么做才能让用户输入的每个作业在数据库中创建一个孩子,其具体信息。所以像:

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

感谢

回答

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。

} 
}); 


    }` 

希望它能帮助:)

+0

感谢您的答复,我会更新你的结果,当我得到机会实现更改 –

+0

它的工作非常感谢您的帮助! 。 ps如果我想添加更多的节点,我是否需要创建另一个类? –

+0

很好听,它的工作原理,如果你需要为同一个类创建其他节点,只需使用'DatabaseReference作业',如果它是为一个不同的类定义了一个新的'DatabaseReference' – SalmanALharbi