如何将要创建的Android项目的ID写入Firebase数据库

问题描述 投票:0回答:2

我使用实时数据库。 Java。问题是我无法获得创建的ID。我有一个创建订单的用户:

enter image description here

创建的订单已输入数据库中

enter image description here

它包括信息,发件人的ID,并且还必须在屏幕快照中显示其自己的ID,这是我遇到的问题。

下面的订单创建代码

    private EditText mDateField, mModelField, mProblemField, mAdressField;
    private Button mConfirm;
    private FirebaseUser fuser;
    @Override     
    protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.activity_order);

    mDateField = findViewById(R.id.date);
    mModelField = findViewById(R.id.model);
    mProblemField= findViewById(R.id.problem_desc);
    mAdressField = findViewById(R.id.adress);
    mConfirm = findViewById(R.id.confirm);
    fuser = FirebaseAuth.getInstance().getCurrentUser();
    final String userID = fuser.getUid();
    final String orderid = "";


    mConfirm.setOnClickListener(new View.OnClickListener() {
        @Override
        public void onClick(View v) {
            String date = mDateField.getText().toString();
            String model = mModelField.getText().toString();
            String adress = mAdressField.getText().toString();
            String problem = mProblemField.getText().toString();
            saveOrderInformation(orderid,userID,date,model,adress,problem);
            finish();
            AppUtilities.showToast(OrderActivity.this,"Order");
        }
    });
}

private void  saveOrderInformation(String id, String sender, String date, String model, String adress, String problem){

    DatabaseReference reference = FirebaseDatabase.getInstance().getReference();
    HashMap<String,Object> hashMap = new HashMap<>();
    hashMap.put("id",id);
    hashMap.put("sender",sender);
    hashMap.put("date",date);
    hashMap.put("model",model);
    hashMap.put("adress",adress);
    hashMap.put("problem",problem);
    reference.child("Orders").push().setValue(hashMap);
}
}
java firebase android-studio firebase-realtime-database id
2个回答
0
投票

如果您希望push()也是属性id的值,则可以尝试以下操作:

private void  saveOrderInformation(String id, String sender, String date, String model, String adress, String problem){

    DatabaseReference reference = FirebaseDatabase.getInstance().getReference();
    String key = reference.child("Orders").push().getKey();

    HashMap<String,Object> hashMap = new HashMap<>();
    hashMap.put("id",key);
    hashMap.put("sender",sender);
    hashMap.put("date",date);
    hashMap.put("model",model);
    hashMap.put("adress",adress);
    hashMap.put("problem",problem);
    reference.child("Orders").child(key).setValue(hashMap);  
   }

您可以使用push()获得getKey()值,然后将其分配给id并在设置值时用作参考。


0
投票

id为空白,因为您已在final String orderid = "";上将其设置为空白您可以删除该行,也可以删除数据库中的发件人列并将其设置为id。或者,如果您要将orderID设置为数据库中的id。然后使用下面的函数获取id

DatabaseReference reference = FirebaseDatabase.getInstance().getReference("Orders");
String id = reference.push().getKey();

并将此ID设置为数据库中的ID,通过

    HashMap<String,Object> hashMap = new HashMap<>();
    hashMap.put("id",id);
    hashMap.put("sender",sender);
    hashMap.put("date",date);
    hashMap.put("model",model);
    hashMap.put("adress",adress);
    hashMap.put("problem",problem);

然后通过以下方式将整个数据集插入数据库:>

reference.child(id).setValue(hashMap);

0
投票

id为空白,因为您已在final String orderid = "";上将其设置为空白您可以删除该行,也可以删除数据库中的发件人列并将其设置为id。或者,如果您要将orderID设置为数据库中的id。然后使用下面的函数获取id

DatabaseReference reference = FirebaseDatabase.getInstance().getReference("Orders");
String id = reference.push().getKey();

并将此ID设置为数据库中的ID,通过

    HashMap<String,Object> hashMap = new HashMap<>();
    hashMap.put("id",id);
    hashMap.put("sender",sender);
    hashMap.put("date",date);
    hashMap.put("model",model);
    hashMap.put("adress",adress);
    hashMap.put("problem",problem);

然后通过以下方式将整个数据集插入数据库:>

reference.child(id).setValue(hashMap);
© www.soinside.com 2019 - 2024. All rights reserved.