2016-10-28 12 views
1

私はチャットアプリケーションを開発しています。私はすでにダミーのチャット履歴をデザインしています。しかし、私は日付に応じてメッセージをグループ化する方法にこだわっています。 。あなたは私に方法を示すことができますか、私はそれをどのように達成することができますか?私は私の質問を詳述するためにいくつかのスクリーンショットを添付しました。whatsappのようなセクションヘッダリストを作成するには?

![enter image description here

答えて

1

See this image

を入れて、毎回、あなたの現在のメッセージを確認し、このヘルプを願っています http://stacktips.com/tutorials/android/listview-with-section-header-in-android

日付と前のメッセージの日付。日付が同じ場合はヘッダーを非表示にします。下記を参照してください:あなたはスクリーンショットの上で見ることができるように、複数のヘッダがある

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

シンプルです。これを実行する最も簡単な方法は、すべての項目に日付ヘッダビューを埋め込むことで圧倒的に

:ちょうどより多くの詳細 - https://developer.android.com/reference/android/widget/ListView.html#addHeaderView(android.view.View)

更新のためのあなたのListView

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

listView.addHeaderView(textView); 

にヘッダビューを追加。次に、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

昨日、今日とリストビューは –

+0

が最後の編集を参照してください@saurav唯一のヘッダーが含まれています。それはあなたを助けるかもしれない –

1

チェックこのリンク:私はあなたがカスタムlisviewアダプタレイアウトであなたのヘッダーを

+1

nc .itは私のために働いた –

+0

ハッピーコーディング! –

関連する問題