【问题标题】:Android Firebase get ServerValue.TIMESTAMPAndroid Firebase 获取 ServerValue.TIMESTAMP
【发布时间】:2018-01-30 05:20:35
【问题描述】:

我想问一下如何使用viewholder获取ServerValue.TIMESTAMP并将其转换为显示到textView。 这是我的数据库“评级”中的代码

ratingDatabase = FirebaseDatabase.getInstance().getReference().child("Rating").push();
            Map userMap = new HashMap();
            userMap.put("comment", comments);
            userMap.put("foodId", foodId);
            userMap.put("rateValue", String.valueOf(value));
            userMap.put("userName", firebaseAuth.getCurrentUser().getEmail());
            userMap.put("timestamp", ServerValue.TIMESTAMP);

            ratingDatabase.setValue(userMap);

我尝试获取有关评级的任何数据,但它始终为空。如何使用“Push key”进入“Rating”目录?我只需要 database.child("Rating") 或 database.child("Rating").push 吗?我知道推送键会生成一个生成的密钥,我只想让孩子进入目录。

这是我获取 ServerValue.TIMESTAMP 的代码

 if (getIntent()!=null)
            {
                foodId = getIntent().getStringExtra(Common.INTENT_SHOW_COMMENT);
                if (!foodId.isEmpty() &&  foodId !=null)
                {
                    Query query = ratingTbl.orderByChild("foodId").equalTo(foodId);
                    FirebaseRecyclerOptions<Rating> options = new FirebaseRecyclerOptions.Builder<Rating>().setQuery
                            (query, Rating.class).build();

                    adapter = new FirebaseRecyclerAdapter<Rating, ShowCommentViewholder>(options) {
                        @Override
                        protected void onBindViewHolder(@NonNull final ShowCommentViewholder holder, int position, @NonNull Rating model) {
                            //String date = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss").format(Calendar.getInstance().getTime());
                            holder.Ratingbar.setRating(Float.parseFloat(model.getRateValue()));
                            holder.TxtEmail.setText(model.getUserName());
                            holder.TxtComment.setText(model.getComment());
                           /* ratingDatabase = FirebaseDatabase.getInstance().getReference().child("Rating").addValueEventListener(new ValueEventListener() {
                                @Override
                                public void onDataChange(DataSnapshot dataSnapshot) {
                                    String time = dataSnapshot.child("comment").getValue().toString();
                                    GetTime getTimeAgo = new GetTime();
                                    long lastime = Long.parseLong(time);
                                    String LastComment= getTimeAgo.getTimeAgo(lastime, ViewComment.this);
                                    holder.Date.setText(time);
                                }

                                @Override
                                public void onCancelled(DatabaseError databaseError) {

                                }
                            });*/

                        }

这是我的评级模型类

public class Rating {
private String userName, foodId, rateValue, comment;
private long timestamp;


public Rating() {
}

public Rating(String userName, String foodId, String rateValue, String comment) {
    this.userName = userName;
    this.foodId = foodId;
    this.rateValue = rateValue;
    this.comment = comment;
    this.timestamp = timestamp;

}

public long getTime() {
    return timestamp;
}

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

public String getUserName() {
    return userName;
}

public void setUserName(String userName) {
    this.userName = userName;
}

public String getFoodId() {
    return foodId;
}

public void setFoodId(String foodId) {
    this.foodId = foodId;
}

public String getRateValue() {
    return rateValue;
}

public void setRateValue(String rateValue) {
    this.rateValue = rateValue;
}

public String getComment() {
    return comment;
}

public void setComment(String comment) {
    this.comment = comment;
}


}

还有我的 ViewHolder

public ShowCommentViewholder(View itemView) {
    super(itemView);
    TxtComment = (TextView)itemView.findViewById(R.id.ShowComment);
    TxtEmail = (TextView)itemView.findViewById(R.id.useremail);
    Ratingbar =  (RatingBar) itemView.findViewById(R.id.RatingResult);
    Date = (TextView)itemView.findViewById(R.id.date);


  }
}

希望有人可以帮助我。谢谢!

【问题讨论】:

    标签: android firebase firebase-realtime-database


    【解决方案1】:

    ServerValue.TIMESTAMP 使用 viewholder 并将其转换为 textView 显示。

    ServerValue.TIMESTAMP 是 自 Unix 纪元以来的时间,以毫秒为单位,由 Firebase 服务器确定。要转换为日期,您需要使用 -

    SimpleDateFormat sfd = new SimpleDateFormat("dd-MM-yyyy HH:mm:ss");
    String date = sfd.format(new Date(timestamp)) //timestamp is model.getTime() in your case
    

    如何使用“Push key”进入“Rating”目录?

    否。为了只访问数据,Browse through .child(), push() 用于向具有唯一键的节点插入数据。

    【讨论】:

    • 如何使用 textview 查看?我只需要使用model.getcomment()吗?对不起,我只是感到困惑。我试图通过我总是遇到空对象直接将它获取到节点。感谢您的回答。
    • 等一下,null 会发生什么?
    • 当我试图在我的数据库上获取 getValue 时。我使用了 ratingdatabase.child(“Rating”),我无法获得任何值,但在我的其他数据库上还可以
    • 好的,那可能是取数据的过程有问题。
    • 所以看起来像这样吧? Model.getTime(timestamp);?
    猜你喜欢
    • 2018-09-17
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2017-05-15
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多