我有一个名为(messages)的模型类。在回收器视图适配器的绑定视图持有者方法中,我这样做是为了从(消息)类中提取(时间)字符串:
@override
public void onBindViewHolder(final ViewHodler view holder, int position){
//here I extract the time value from (messages) class
messages mess=messageslist.get(position);
//I store it in a long variable called time
long time= mess.getTime();
}
在此之前,我只在Recycler视图中获取每个项目的时间值。但是我也希望得到上一个项目的时间并将其与下一个项目进行比较。
换句话说,我试图找出recyclerview中每两项之间的时间差异。
感谢您的帮助。
修改
好的我想要做的是显示或隐藏日期视图,如果两个项目之间的日期差异达到或超过1天。如果我根据下面的答案这样做,我就没有结果......就像这样
//the time of the item
long time= mess.getTime();
//the time of the previous item according to the answers below
long pre_time=messageslist.get(position-1).getTime();
//now I compare the difference
if(time - pre_time >= 24*3600*1000){
//show date
}else{
//hide date
}
但是做得很好。
答案 0 :(得分:1)
messages mess = messageslist.get(position);
if (position > 0){
long time_diffrence = mess.getTime() - messageslist.get(position-1).getTime();
}
答案 1 :(得分:1)
根据更新后的问题编辑答案
您应该将时间毫秒转换为DAY_OF_MONTH,并检查当前项目的日期是否大于上一项目的日期。
Calendar calendar = Calendar.getInstance();
Messages mess = messagesList.get(position);
calendar.setTimeInMillis(mess.getTime());
int date = calendar.get(Calendar.DAY_OF_MONTH);
if (position > 0) {
Messages previousMessage = messagesList.get(position - 1);
if (previousMessage != null) {
calendar.setTimeInMillis(previousMessage.getTime());
int prevDate = calendar.get(Calendar.DAY_OF_MONTH);
if (date > prevDate) {
// This is a different day than the previous message, so show the Date
} else {
// Same day, so hide the Date
}
}
} else {
// This is the first message, so show the date
}
答案 2 :(得分:0)
(1)第一步时间戳转换为Date转换思路
private String getDate(String createdDate) {
long timestampString = Long.parseLong(createdDate);
@SuppressLint("SimpleDateFormat") String value = new java.text.SimpleDateFormat("dd/MM/yyyy").
format(new java.util.Date(timestampString * 1000));
return value;
}
(2)onBindViewHolder中的第二步
if (position == 0) {
holder.mTextViewNewTime.setVisibility(View.VISIBLE);
holder.mTextViewNewTime.setText(getDate(bean.getCreatedDate()));
} else {
String prev_date_time = getDate(mPojoTicketChatList.get(position - 1).getCreatedDate());
//String prev_date[] = prev_date_time[0].split("-");
if (getDate(bean.getCreatedDate()).equals(prev_date_time)) {
holder.mTextViewNewTime.setVisibility(View.GONE);
} else {
holder.mTextViewNewTime.setVisibility(View.VISIBLE);
holder.mTextViewNewTime.setText(getDate(bean.getCreatedDate()));
}
}
尝试为我工作