2016-10-28 6 views
1

Я разрабатываю чат-приложение, и у меня уже есть филиальная история чата. Но я застрял в том, как группировать сообщения в соответствии с его датой, и когда мы прокручиваем его вниз, индикатор даты на верхней позиции, как и приложение , можете ли вы просто показать мне способ, как я могу это достичь? Я приложил несколько скриншотов ниже, чтобы уточнить мой вопрос.Как создать заголовок заголовка раздела, например whatsapp?

![enter image description here

ответ

1

See this image

Поместите свой заголовок в вашей пользовательской lisview макета адаптера и проверить каждый раз, когда текущее сообщение дату и дату предыдущего сообщения. Если дата такая же, тогда скройте свой заголовок, иначе покажите свой заголовок. Смотрите ниже:

holder.tvDate.setText(chatMessage.getDate()); 
    if (position > 0) { 
     if (chatMessages.get(position).getDate().equalsIgnoreCase(chatMessages.get(position - 1).getDate())) { 
      holder.header.setVisibility(View.GONE); 
     } else { 
      holder.header.setVisibility(View.VISIBLE); 
     } 
    } else { 
     holder.header.setVisibility(View.VISIBLE); 
    } 
0

Simple. Просто добавьте вид заголовка к вашему ListView

TextView textView = new TextView(context); 
textView.setText("Hello. I'm a header view"); 

listView.addHeaderView(textView); 

для более детали- https://developer.android.com/reference/android/widget/ListView.html#addHeaderView(android.view.View)

Update:

До сих пор самый простой способ сделать это, чтобы встроить вид заголовка дата в каждой позиции , Затем все, что вам нужно сделать в bindView, - это сравнить дату предыдущей строки с датой этой строки и скрыть дату, если она будет одинаковой. Что-то вроде этого:

String thisDate = cursor.getString(dateIndex); 
String prevDate = null; 

// get previous item's date, for comparison 
if (cursor.getPosition() > 0 && cursor.moveToPrevious()) { 
    prevDate = cursor.getString(dateIndex); 
    cursor.moveToNext(); 
} 

// enable section heading if it's the first one, or 
// different from the previous one 
if (prevDate == null || !prevDate.equals(thisDate)) { 
    dateSectionHeaderView.setVisibility(View.VISIBLE); 
} else { 
    dateSectionHeaderView.setVisibility(View.GONE); 
} 
+0

, как вы можете видеть на скриншоте выше, есть более чем один заголовок вчера, сегодня и просматривать список содержит только один заголовок @saurav –

+0

увидеть последние изменения. Это может помочь вам –