Android 如何在滚动列表视图上显示像Whatsapp这样的日期
当我像WhatsApp那样滚动列表视图时,如何在应用程序中显示日期?Android 如何在滚动列表视图上显示像Whatsapp这样的日期,android,android-layout,listview,android-fragments,android-adapter,Android,Android Layout,Listview,Android Fragments,Android Adapter,当我像WhatsApp那样滚动列表视图时,如何在应用程序中显示日期? 为了清晰起见,请参见下图: 当我滚动列表视图时,日期会显示在列表上。 如果你仍然不明白我的问题,请打开你的WhatsApp,进入任何群组并开始滚动:你将看到显示旧文本的日期 Calendar cal=Calendar.getInstance(); SimpleDataFormat sdf=新的SimpleDataFormat(“dd MMM yyyy”); 字符串strDate=sdf.format(cal.getTime(
为了清晰起见,请参见下图: 当我滚动列表视图时,日期会显示在列表上。
如果你仍然不明白我的问题,请打开你的WhatsApp,进入任何群组并开始滚动:你将看到显示旧文本的日期
Calendar cal=Calendar.getInstance();
SimpleDataFormat sdf=新的SimpleDataFormat(“dd MMM yyyy”);
字符串strDate=sdf.format(cal.getTime());
今天=新字符串[user.length()];
昨天=新字符串[user.length()];
previous=新字符串[user.length()];
int t_计数器=0;
int y_计数器=0;
int e_计数器=0;
for(int i=0;i86400000){
如果(e_计数器==0){
TextView tv=getTextView(lp,“早期”);
myLayout.addView(电视);
e_计数器=e_计数器+1;
}
查看msgView=generateChatView(post,time);
myLayout.addView(msgView);
}
}
要像此屏幕截图一样显示日期,可以使用
val firstVisiblePosition = layoutManager.findFirstVisibleItemPosition()
if (getDateFromFirebaseTime(messageArrayList[firstVisiblePosition].timestamp.toString().toLong()).isNotEmpty()) {
tvDay.visibility = View.VISIBLE
tvDay.text = getDateFromFirebaseTime(messageArrayList[firstVisiblePosition].timestamp.toString().toLong())
} else {
tvDay.visibility = View.GONE
}
我在这里做的是获取RecyclerView列表中第一个可见项的索引,然后从该索引中获取消息的时间戳,并使用函数getDateFromFirebaseTime()
上面的代码添加在ScrollListener的ThisMethodofRecyclerView中
override fun onScrolled(recyclerView: RecyclerView, dx: Int, dy: Int) {
super.onScrolled(recyclerView, dx, dy)
Log.d("scroll", "scrolling")
//added here
}
注意:此处在XML中添加了
tvDay
,其中提供了RecyclerView
RecyclerView
和tvDay
是RelativeLayout
和tvDay
的同一个子项,设置为android:layout\u centerHorizontal=“true”
,以使其保持在顶部中心。@ManishGupta它只是比较日期并向容器添加匹配的视图,您需要一种方法来确定在listview顶部显示的消息以及它的起始日期,将其与当前日期进行比较,并添加一个显示信息的视图,没有通用的解决方案。如何设置它的动画?@AbhayKoradiya您可以在scroll listener中设置此布局的动画。
override fun onScrolled(recyclerView: RecyclerView, dx: Int, dy: Int) {
super.onScrolled(recyclerView, dx, dy)
Log.d("scroll", "scrolling")
//added here
}