-1

Im currently working a viber activity for an android studio application. My application is able to determine who has sent the message but it currently isn't able to put a timestamp on it. singlemessage_layout.xml

    <TextView
        android:id="@+id/messageTime"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_marginLeft="10dp"
        android:layout_marginRight="5dp"
        android:text=""
        android:textColor="#000000"
        android:textStyle="bold" />

message.java

import java.util.Date;

public class Message {
    private String content,username;
    private long time;
    public Message()
    {

    }
    public Message(String content,String username)
    {
        this.content=content;
        this.username = username;
    }

    public String getUsername() {
        return username;
    }

    public void setUsername(String username) {
        this.username = username;
    }

    public String getContent()
    {
      return content;
    }
    public void setContent(String content)
    {
        this.content = content;
    }

    public long getTime() {
        return time;
    }

    public void setTime(long time) {
        this.time = time;
    }
}

discussion board.java

import android.provider.ContactsContract;
import android.support.annotation.NonNull;
import android.support.v7.app.AppCompatActivity;
import android.os.Bundle;
import android.support.v7.widget.LinearLayoutManager;
import android.support.v7.widget.RecyclerView;
import android.text.TextUtils;
import android.text.format.DateUtils;
import android.view.View;
import android.widget.EditText;
import android.widget.TextView;
import android.text.format.DateFormat;

import com.firebase.ui.database.FirebaseRecyclerAdapter;
import com.google.android.gms.tasks.OnCompleteListener;
import com.google.android.gms.tasks.Task;
import com.google.firebase.auth.FirebaseAuth;
import com.google.firebase.auth.FirebaseUser;
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.util.Date;


public class discussionboard extends AppCompatActivity {
    private EditText editMessage;
    private DatabaseReference mDatabase;
    private RecyclerView mMessageList;
    private FirebaseAuth mAuth;
    private FirebaseDatabase database;
    private FirebaseAuth.AuthStateListener mAuthListener;
    private FirebaseUser mCurrentUser;
    private DatabaseReference mDatabaseUsers;

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_discussionboard);
        editMessage=(EditText)findViewById(R.id.editMessageE);
        mDatabase = FirebaseDatabase.getInstance().getReference().child("Messages");
        mMessageList = (RecyclerView)findViewById(R.id.messageRec);
        mMessageList.setHasFixedSize(true);
        LinearLayoutManager linearLayoutManager = new LinearLayoutManager(this);
        linearLayoutManager.setStackFromEnd(true);
        mMessageList.setLayoutManager(linearLayoutManager);
        mAuth = FirebaseAuth.getInstance();
    }
    public void sendButtonClicked(View view)
    {
        mCurrentUser = mAuth.getCurrentUser();
        mDatabaseUsers = FirebaseDatabase.getInstance().getReference().child("Users").child(mCurrentUser.getUid());
        final String messageValue = editMessage.getText().toString().trim();
        if(!TextUtils.isEmpty(messageValue))
        {
            final DatabaseReference newPost = mDatabase.push();
            mDatabaseUsers.addValueEventListener(new ValueEventListener() {
                @Override
                public void onDataChange(DataSnapshot dataSnapshot) {
                    newPost.child("content").setValue(messageValue);
                    newPost.child("username").setValue(dataSnapshot.child("name").getValue()).addOnCompleteListener(new OnCompleteListener<Void>() {
                        @Override
                        public void onComplete(@NonNull Task<Void> task) {

                        }
                    });
                }

                @Override
                public void onCancelled(DatabaseError databaseError) {

                }
            });
            mMessageList.scrollToPosition(mMessageList.getAdapter().getItemCount());
            editMessage.setText("");


        }

    }
    @Override
    protected void onStart()
    {
      super.onStart();
        FirebaseRecyclerAdapter<Message,MessageViewHolder> FBRA = new FirebaseRecyclerAdapter<Message, MessageViewHolder>(
                Message.class,
                R.layout.singlemessagelayout,
                MessageViewHolder.class,
                mDatabase) {
            @Override
            protected void populateViewHolder(MessageViewHolder viewHolder, Message model, int position) {
                viewHolder.setContent(model.getContent());
                viewHolder.setUsername(model.getUsername());

            }
        };
        mMessageList.setAdapter(FBRA);
    }
    public static class MessageViewHolder extends RecyclerView.ViewHolder
    {
        View mView;
        public MessageViewHolder(View itemView) {
            super(itemView);
            mView=itemView;
        }
        public void setContent(String content)
        {
            TextView messag_content = (TextView) mView.findViewById(R.id.messageText);
            messag_content.setText(content);
        }
        public void setUsername(String username)
        {
            TextView username_content = (TextView)mView.findViewById(R.id.usernametext);
            username_content.setText(username);
        }
    }

}

How is it possible to post the current date in the messageTime textview

Aaron Nicholl
  • 121
  • 1
  • 9

1 Answers1

0

The easy way to do this is like this

Get the current TimeStamp

Long timeStamp = System.currentTimeMillis()/1000;
String currentTimeStamp = timeStamp.toString();

And then set it to your textView like this

textView.setText(currentTimeStamp); //this will return the textView with the current TimeStamp

Edit: if you will need this timeStamp in the future you should upload it to your firebase database , just use this line that stores the timestamp and make a new setValue for it

Example: in your sendButtonClicked you should add this to get the timeStamp and send it with the message

    Long timeStamp = System.currentTimeMillis()/1000;
    String currentTimeStamp = timeStamp.toString();
    newPost.child("username").child("timeStamp").setValue(currentTimeStamp);

Hope it helps

Happy Coding !

Gastón Saillén
  • 9,076
  • 4
  • 39
  • 58