我正试图让这个实时数据库显示我的"文本";按时间顺序。它不断地添加我的";文本";按字母顺序从上到下排列。我确信我需要添加时间戳来修复它,但我不能100%确定。
这是我的主要活动:
> package com.example.osada;
>
> import android.os.Bundle;
> import android.view.View;
> import android.widget.EditText;
> import android.widget.TextView;
>
> import androidx.appcompat.app.AppCompatActivity;
>
> import com.google.firebase.database.DataSnapshot;
> import com.google.firebase.database.DatabaseError;
> import com.google.firebase.database.DatabaseReference;
> import com.google.firebase.database.FirebaseDatabase;
> import com.google.firebase.database.ValueEventListener;
>
> import java.text.SimpleDateFormat;
> import java.util.Date;
>
> public class MainActivity extends AppCompatActivity {
>
> private DatabaseReference myDatabase;
> SimpleDateFormat sdf = new SimpleDateFormat("yyyy.MM.dd G 'at' HH:mm:ss z");
> String currenttime = sdf.format(new Date());
>
> @Override
> protected void onCreate(Bundle savedInstanceState) {
> super.onCreate(savedInstanceState);
> setContentView(R.layout.activity_main);
>
> myDatabase = FirebaseDatabase.getInstance() .getReference("message1");
>
> TextView textmessage = findViewById(R.id.text);
>
> myDatabase.addValueEventListener(new ValueEventListener() {
> @Override
> public void onDataChange(DataSnapshot snapshot) {
>
>
> textmessage.setText(snapshot.getValue().toString());
>
>
>
> }
>
> @Override
> public void onCancelled(DatabaseError error) {
> textmessage.setText("Error, please try again later.");
> }
> });
> }
> public void sendMessage (View view){
>
> EditText myEditText = findViewById(R.id.editTextTextPersonName);
> myDatabase.push().child("Jon").setValue(myEditText.getText().toString());
> myEditText.setText("");
> System.out.println();
>
>
>
>
> }
> }
以下是Firebase实时数据库显示的内容:数据库
这是我的android模拟器显示的模拟器
我确信我需要添加一个时间戳来修复它,但我不能100%确定
实际上,您需要添加一个可以保存时间戳的新属性。这可以使用我在以下帖子中的回答来完成:
- 当我向Firebase实时数据库添加新值时,如何保存当前日期/时间
一旦有了新字段,就可以使用Query的orderByChild(字符串路径(方法:
创建一个查询,其中子节点按指定路径的值排序。
默认情况下,顺序为升序。如果你需要降序,请从下面的帖子中看到我的答案:
如何按升序或降序排列firebase数据库数据?