Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/android/213.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Android 如何在滚动列表视图上显示像Whatsapp这样的日期_Android_Android Layout_Listview_Android Fragments_Android Adapter - Fatal编程技术网

Android 如何在滚动列表视图上显示像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那样滚动列表视图时,如何在应用程序中显示日期?
为了清晰起见,请参见下图:

当我滚动列表视图时,日期会显示在列表上。
如果你仍然不明白我的问题,请打开你的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
        }