Я разрабатываю чат-приложение, и у меня уже есть филиальная история чата. Но я застрял в том, как группировать сообщения в соответствии с его датой, и когда мы прокручиваем его вниз, индикатор даты на верхней позиции, как и приложение , можете ли вы просто показать мне способ, как я могу это достичь? Я приложил несколько скриншотов ниже, чтобы уточнить мой вопрос.Как создать заголовок заголовка раздела, например whatsapp?
ответ
Поместите свой заголовок в вашей пользовательской 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);
}
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);
}
Проверить эту ссылку: http://stacktips.com/tutorials/android/listview-with-section-header-in-android
Я надеюсь, что это поможет вам
nc .it работает для меня –
Счастливое кодирование !!! –
, как вы можете видеть на скриншоте выше, есть более чем один заголовок вчера, сегодня и просматривать список содержит только один заголовок @saurav –
увидеть последние изменения. Это может помочь вам –