首页 > 解决方案 > 如何在kotlin中将小时转换为分钟并正确传递给viewholder?

问题描述

我正在开发新闻应用程序,我正在从服务器获取这种 2019-10-01T02:49:00Z

我想将该时间转换为如下图所示的分钟(从现在到该日期的经过时间)并将该方法传递给查看器。

图片

在我的视图类类 TopHeadlinesAdapter(val context: Context) 下方: RecyclerView.Adapter() {

var articleList : List<Article> = listOf()

override fun onCreateViewHolder(parent: ViewGroup, viewType: Int): MyViewHolder {

    val view = LayoutInflater.from(parent.context).inflate(R.layout.news_list,parent,false)
    return MyViewHolder(view)
}

override fun getItemCount(): Int {
    return articleList.size
}

@SuppressLint("NewApi")
override fun onBindViewHolder(holder: MyViewHolder, position: Int) {

    holder.articleTitle.text = articleList.get(position).title
    holder.articleSourceName.text = articleList.get(position).source.name
    Picasso.get().load(articleList.get(position).urlToImage).into(holder.image)
    holder.articleTime.text = articleList.get(position).publishedAt



}

fun setMovieListItems(articleList: List<Article>){
    this.articleList = articleList
    notifyDataSetChanged()
}

@SuppressLint("NewApi")
fun example( time:String) {

    val timelinePoint = LocalDateTime.parse("2019-10-01T02:49:00")
    val now = LocalDateTime.now()

    var elapsedTime = Duration.between(timelinePoint, now)

    println(timelinePoint)
    println(now)

    println(elapsedTime.toMinutes())



}
class MyViewHolder(itemView: View?) : RecyclerView.ViewHolder(itemView!!) {

    val image: ImageView = itemView!!.findViewById(R.id.imageView)
    val articleTitle: TextView = itemView!!.findViewById(R.id.articleTitle)
    val articleSourceName: TextView = itemView!!.findViewById(R.id.articleSourceName)
    val imageCategory: ImageView = itemView!!.findViewById(R.id.imageCategory)
    val articleTime: TextView = itemView!!.findViewById(R.id.articleTime)

}

}

标签: kotlindatetime-conversion

解决方案


时间到分钟?这是什么意思?

我猜你想显示从现在到新闻发布日期的经过时间。如果是这样,您可以Java Time API从 Java8 使用:

import java.time.Duration
import java.time.LocalDateTime

fun example() {
    val timelinePoint = LocalDateTime.parse("2019-10-01T02:49:00")
    val now = LocalDateTime.now()

    val elapsedTime = Duration.between(timelinePoint, now)

    println(timelinePoint)
    println(now)

    println(elapsedTime.toMinutes())
}


推荐阅读