我有ListView,它显示的消息和时间就像任何聊天应用程序一样。我想显示时间戳,如今天,昨天以及ListView中的日期。我已将它设置为适配器,但它显示在所有行中,但我只想显示昨天开始的消息,所有消息都应该显示今天的消息。 我坚持下去,请大家帮忙解决它!!!
我试过这个工作正常,但我想只在一行项目中显示不在所有行项目中
public String getSmsTodayYestFromMilli(long msgTimeMillis) {
Calendar messageTime = Calendar.getInstance();
messageTime.setTimeInMillis(msgTimeMillis);
// get Currunt time
Calendar now = Calendar.getInstance();
final String strTimeFormate = "h:mm aa";
final String strDateFormate = "dd/MM/yyyy h:mm aa";
if (now.get(Calendar.DATE) == messageTime.get(Calendar.DATE)
&&
((now.get(Calendar.MONTH) == messageTime.get(Calendar.MONTH)))
&&
((now.get(Calendar.YEAR) == messageTime.get(Calendar.YEAR)))
) {
// return "today at " + DateFormat.format(strTimeFormate, messageTime);
return "Today";
} else if (
((now.get(Calendar.DATE) - messageTime.get(Calendar.DATE)) == 1)
&&
((now.get(Calendar.MONTH) == messageTime.get(Calendar.MONTH)))
&&
((now.get(Calendar.YEAR) == messageTime.get(Calendar.YEAR)))
) {
// return "yesterday at " + DateFormat.format(strTimeFormate, messageTime);
return "Yesterday";
} else {
mDay = DateFormat.format(strDateFormate, messageTime) + "";
// return "date : " + DateFormat.format(strDateFormate, messageTime);
return DateFormat.format(strDateFormate, messageTime) + "";
}
}
答案 0 :(得分:0)
这是每个聊天应用的常见问题。也许您可以从这个库中读取来源:Android Ago library
答案 1 :(得分:0)
getRelativeTimeSpanString
答案 2 :(得分:0)
如果您想按日期对项目进行分组,请参阅以下主题 Group items by date
答案 3 :(得分:0)
你比较了两个日期,首先是getView&另一个是上一个项目(位置-1),请尝试这个:
try {
SimpleDateFormat format = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss", Locale.getDefault());
Date date_ = format.parse("Item date time");
java.text.DateFormat df = java.text.DateFormat.getTimeInstance();
vh.chat_time_label_txt.setText(df.format(date_));
SimpleDateFormat dateFormat_ = new SimpleDateFormat(
"dd MMMM yyyy", Locale.ENGLISH);
vh.top_date_label_txt.setText(dateFormat_.format(date_));
vh.top_date_label_txt.setVisibility(View.VISIBLE);
if (position > 0) {
XmppChatModel temp = mChatConversationArrayList.get(mChatConversationArrayList.size() - 1);
Date date__ = format.parse(temp.getTIMESTAMP());
if (dateFormat_.format(date__)
.equals(dateFormat_.format(date_))) {
vh.top_date_label_txt.setVisibility(View.GONE);
}
}
} catch (Exception e) {
e.printStackTrace();
vh.top_date_label_txt.setVisibility(View.GONE);
}