Как отобразить метку времени Firestore (Дата и время) в RecyclerView - PullRequest
0 голосов
/ 21 мая 2019

Я создаю приложение Банка и хочу показать историю транзакций по счету. Когда я сохраняю время для Firestore в его формате в качестве метки времени, но когда я пытаюсь отобразить его в своем RecyclerView, это всего лишь секунды и наносекунды.

Как я могу показать дату и время?

Мой метод recyclerView:

    private void setUpRecyclerView() {
        String userId = FirebaseAuth.getInstance().getCurrentUser().getUid();

        CollectionReference accountTransRef = db.collection(userId).document("accounts")
                .collection("accounts").document(accountID).collection("transactions");

        Query query = accountTransRef.orderBy("tTimestamp",Query.Direction.DESCENDING);
        FirestoreRecyclerOptions<AccountTransactionModel> options = new FirestoreRecyclerOptions.Builder<AccountTransactionModel>()
                .setQuery(query, AccountTransactionModel.class)
                .build();

        adapter = new AccountTransferAdapter(options);

        RecyclerView recyclerView = findViewById(R.id.rwTransactionList);
        recyclerView.setHasFixedSize(true);
        recyclerView.setLayoutManager(new LinearLayoutManager(this));
        recyclerView.setAdapter(adapter);
    }

Моя модель для транзакций

public class AccountTransactionModel {
    private String tType,tAccountToId, tDocumentId;
    private Timestamp tTimestamp;
    private double tAmount;

    public AccountTransactionModel() {
    }

    public AccountTransactionModel(String tType, String tAccountToId, String tDocumentId, Timestamp tTimestamp, double tAmount) {
        this.tType = tType;
        this.tAccountToId = tAccountToId;
        this.tDocumentId = tDocumentId;
        this.tTimestamp = tTimestamp;
        this.tAmount = tAmount;
    }

    public String gettType() {
        return tType;
    }

    public String gettAccountToId() {
        return tAccountToId;
    }

    @Exclude
    public String gettDocumentId() {
        return tDocumentId;
    }

    public void settDocumentId(String tDocumentId) {
        this.tDocumentId = tDocumentId;
    }

    public Timestamp gettTimestamp() {
        return tTimestamp;
    }

    public double gettAmount() {
        return tAmount;
    }
}

Мой адаптер

public class AccountTransferAdapter extends FirestoreRecyclerAdapter<AccountTransactionModel, AccountTransferAdapter.TransferHolder > {


    public AccountTransferAdapter(@NonNull FirestoreRecyclerOptions<AccountTransactionModel> options) {
        super(options);
    }

    @Override
    protected void onBindViewHolder(@NonNull TransferHolder holder, int position, @NonNull AccountTransactionModel model) {
        holder.tvTransListAmount.setText(Double.toString(model.gettAmount()));
        holder.tvTransListType.setText(model.gettType());
        holder.tvTransListTime.setText(model.gettTimestamp().toString());
    }

    @NonNull
    @Override
    public TransferHolder onCreateViewHolder(@NonNull ViewGroup viewGroup, int i) {
        View v = LayoutInflater.from(viewGroup.getContext()).inflate(R.layout.transactions_list,viewGroup,false);
        return new TransferHolder(v);

    }

    class TransferHolder extends RecyclerView.ViewHolder{
        TextView  tvTransListAmount;
        TextView tvTransListTime;
        TextView tvTransListType;

        public TransferHolder(@NonNull View itemView) {
            super(itemView);
            tvTransListAmount = itemView.findViewById(R.id.trans_list_amount);
            tvTransListTime = itemView.findViewById(R.id.trans_list_time);
            tvTransListType = itemView.findViewById(R.id.trans_list_type);
            //tvAccName = itemView.findViewById(R.id.tvAccountName);
            //tvAccBalance = itemView.findViewById(R.id.tvAccountBalance);
        }
    }
}

Что отображается в моем представлении, приложении и Firestore :

Timestamp (секунды = 1558437203, наносекунд = 72000000)

what it looks like in the app What my Firestore data looks like

Ответы [ 2 ]

1 голос
/ 21 мая 2019

Если Timestamp является пакетом Firebase, вы можете перейти с Timestamp#toDate() function

model.gettTimestamp().toDate().toString(), который должен дать вам всю дату

1 голос
/ 21 мая 2019

Изменить это:

 holder.tvTransListTime.setText(model.gettTimestamp().toString());

в это:

 holder.tvTransListTime.setText(model.gettTimestamp().toDate());

Из документов :

public Date toDate ()

Возвращает новую дату, соответствующую этой отметке времени.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...