2017-04-03 7 views
0

Ich habe ListView, es zeigt die Nachrichten und Zeit wie jede Chat-App. Ich möchte den Zeitstempel wie anzeigen Heute, Gestern und auch Datum in ListView. Ich habe es in den Adapter gesetzt, aber es zeigt in der ganzen Reihe, aber ich will nur den Anfang wie gestern die Nachricht alle darunter anzeigen und heute sollten die Nachrichten die heutigen Nachrichten zeigen. Ich steckte darin, bitte Jungs helfen, es zu lösen !!!Wie Zeit einstellen wie heute, gestern und Datum auf bestimmte Artikel in ListView

ich dies versucht haben, es funktioniert gut, aber ich möchte nur zeigen, die in einer Reihe Artikel ist nicht in allen Reihe Artikel

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

Antwort

0

Dies ist ein generisches Problem für jeden Chat-Anwendung. Kann sein, können Sie durch das Lesen Quelle aus dieser Bibliothek starten: Android Ago library

+0

ich meinen Code aktualisiert haben, es funktioniert gut, aber Das Problem ist, ich möchte nur einmal zeigen, wie heute die unten alle Nachrichten von heute gleichen wie wie whats app !! –

+0

Ich denke, Sie möchten Nachrichten nach Heute, gestern usw. gruppieren? – mpals

+0

Ja, wie Whats App oder jede Chat-Anwendung !!! –

0

bei dieser Methode Werfen Sie einen Blick getRelativeTimeSpanString von DateUtils

0

Wenn Sie dann unter Thread verweisen, indem ihre Daten zu gruppieren Einzelteile wünschen.
Group items by date

0

Sie zwei Termine erste vergleichen haben, ist Position in getView & ein anderer vorherigen Artikel ist (Position-1), bitte versuchen Sie dies:

 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); 
     } 
Verwandte Themen