如何设置ListView中特定项目的今天,昨天和日期的时间

时间:2017-04-03 08:28:56

标签: android listview timestamp message days

我有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) + "";
        }
    }

4 个答案:

答案 0 :(得分:0)

这是每个聊天应用的常见问题。也许您可以从这个库中读取来源:Android Ago library

答案 1 :(得分:0)

DateUtils

查看此方法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);
      }