如何对实时firebase数据库进行时间戳/解码以获得按时间顺序显示



我正试图让这个实时数据库显示我的"文本";按时间顺序。它不断地添加我的";文本";按字母顺序从上到下排列。我确信我需要添加时间戳来修复它,但我不能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数据库数据?

最新更新