I use this code to add the date and time to the post of the user who wrote it:
import java.text.SimpleDateFormat; import java.util.Date; public class Message { //поле private String text; public String date = new SimpleDateFormat("dd.MM.yyyy").format(new Date()); public String time = new SimpleDateFormat("HH.mm.ss").format(new Date()); //пустой конструктор (необходим для работы базы данных) public Message() { } //Конструктор используемый нами public Message(String text) { this.text = text; setText(date + " в " + time + "\n" + this.text +"\n"); } //геттер public String getText() { return text; } //сеттер public void setText(String text) { this.text = text; } } How to make it so that the time being sent is server time, not what the user has on the device. Otherwise, it turns out that the time of the messages is shown not quite correct, because everyone is in different time zones, etc.
PS: main activation code:
import android.os.Bundle; import android.support.v7.app.AppCompatActivity; import android.text.Editable; import android.text.TextWatcher; import android.view.View; import android.widget.Button; import android.widget.EditText; import android.widget.ListView; import com.google.firebase.database.ChildEventListener; 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 java.util.ArrayList; import java.util.List; public class MainActivity extends AppCompatActivity { //1. Пользовательский интерфейс (UI) private ListView mMessageListView; private EditText mMessageEditText; private Button mSendButton; private MessageAdapter mMessageAdapter; //2. Firebase private FirebaseDatabase mFirebaseDatabase; private DatabaseReference mMessageDatabaseReference; private ChildEventListener mChildEventListener; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); // 3. Связываем UI mMessageListView = (ListView) findViewById(R.id.messageListView); mMessageEditText = (EditText) findViewById(R.id.messageEditText); mSendButton = (Button) findViewById(R.id.sendButton); // 4. Инициализируем Firebase mFirebaseDatabase = FirebaseDatabase.getInstance(); mMessageDatabaseReference = mFirebaseDatabase.getReference().child("messages"); // 5. Создаем слушатель базы данных if (mChildEventListener == null) { mChildEventListener = new ChildEventListener() { @Override public void onChildAdded(DataSnapshot dataSnapshot, String s) { Message message = dataSnapshot.getValue(Message.class); mMessageAdapter.add(message); } @Override public void onChildChanged(DataSnapshot dataSnapshot, String s) { } @Override public void onChildRemoved(DataSnapshot dataSnapshot) { } @Override public void onChildMoved(DataSnapshot dataSnapshot, String s) { } @Override public void onCancelled(DatabaseError databaseError) { } }; // 6. Устанавливаем слушатель базы данных mMessageDatabaseReference.addChildEventListener(mChildEventListener); } // 7. Создаем лист где мы будем хранить сообщение List<Message> messages = new ArrayList<>(); // 8. Создаем и устанавливаем адаптер для сообщений mMessageAdapter = new MessageAdapter(this, R.layout.item_message, messages); mMessageListView.setAdapter(mMessageAdapter); // 9. Устанавливаем слушатель клика на кнопку, создаем сообщение, отправляем сообщение в базу, удаляем текст mSendButton.setOnClickListener(new View.OnClickListener() { @Override public void onClick(View v) { Message message = new Message(mMessageEditText.getText().toString()); mMessageDatabaseReference.push().setValue(message); mMessageEditText.setText(""); } }); // *Устанавливаем слушатель текста mMessageEditText.addTextChangedListener(new TextWatcher() { @Override public void beforeTextChanged(CharSequence charSequence, int i, int i1, int i2) { } @Override public void onTextChanged(CharSequence charSequence, int i, int i1, int i2) { if (charSequence.toString().trim().length() > 0) { mSendButton.setEnabled(true); } else { mSendButton.setEnabled(false); } } @Override public void afterTextChanged(Editable editable) { } }); } // 10.Удаляем слушатель базы данных @Override protected void onDestroy() { if (mChildEventListener != null) { mMessageDatabaseReference.removeEventListener(mChildEventListener); mChildEventListener = null; super.onDestroy(); } } }
