通过设备在Firestore上创建文档

时间:2018-08-31 13:43:11

标签: android google-cloud-firestore

当前,我正在尝试从我的android设备创建firestore文档。我遇到了一些问题,因为我在Firestore上的两个字段属于TimeStamp类型。目前,我不知道如何从android向firestore添加时间戳。仅字符串或整数。这是我的代码,其中startTime和endTime设置为String。我希望更改这些设置,以便在我的Firestore文档中为这些字段添加时间戳。

public class NewSessionActivity extends AppCompatActivity {

private EditText editTextModule, editTextTitle, editTextDate, editTextStart, editTextEnd, editTextID;


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

    editTextModule = findViewById(R.id.edit_text_Module1);
    editTextTitle = findViewById(R.id.edit_text_Title1);
    editTextDate = findViewById(R.id.edit_text_Date1);
    editTextStart = findViewById(R.id.edit_text_Start1);
    editTextEnd = findViewById(R.id.edit_text_End1);
    editTextID = findViewById(R.id.edit_text_docID);
}

@Override
public boolean onCreateOptionsMenu(Menu menu) {
    MenuInflater menuInflater = getMenuInflater();
    menuInflater.inflate(R.menu.new_session_menu,menu);
    return super.onCreateOptionsMenu(menu);
}

@Override
public boolean onOptionsItemSelected(MenuItem item) {
    switch (item.getItemId()){
        case R.id.save_session:
            saveSession();
            return true;
            default:
                return super.onOptionsItemSelected(item);
    }
    }

    private void saveSession(){
    String module = editTextModule.getText().toString();
    String title = editTextTitle.getText().toString();
    String date = editTextDate.getText().toString();
    String  startTime = editTextStart.getText().toString();
    String endTime = editTextEnd.getText().toString();
    String docID = editTextID.getText().toString();

    if (module.trim().isEmpty()||title.trim().isEmpty()||date.trim().isEmpty()){
        Toast.makeText(this,"Please fill all fields",Toast.LENGTH_SHORT).show();
        return;
    }
        CollectionReference sessionRef = FirebaseFirestore.getInstance()
                .collection("Session");
    sessionRef.add(new Session(module,title,date,startTime,endTime, docID));
    Toast.makeText(this,"Session Added",Toast.LENGTH_SHORT).show();
    finish();
    }
}

1 个答案:

答案 0 :(得分:0)

您似乎依赖于一个称为Session的类(此处未显示)来帮助将所有值序列化到Firestore。如果您希望文档的某些字段成为Timestamp对象,则必须修改Session以包含Java Date或Timestamp对象而不是字符串。这些类型的属性将成为书面文档中的“时间戳记”字段。这意味着您将必须弄清楚如何解析字符串的值以创建日期或时间戳。如果您对如何执行此操作感到困惑,则应该问另一个有关解析日期字符串的问题(并具体说明要转换的内容)。