как преобразовать прошедшее время с этой даты и передать этот метод для просмотра в kotlin - PullRequest
1 голос
/ 08 октября 2019

Я занимаюсь разработкой новостного приложения и хочу преобразовать прошедшее время с этой даты на другую и передать эту логику владельцу представления в recyclerviewadapterclass, используя kotlin

В следующий раз я получаю от сервера 2019-10-08T15:16: 05Z

и я хочу достичь времени, как показано ниже: фотография время изображение, которое я хочу получить

ниже моего класса адаптера, где я реализовал истекшее время с этого моментак этой дате логика

class TopHeadlinesAdapter(val context: Context) : RecyclerView.Adapter<TopHeadlinesAdapter.MyViewHolder>() {

    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)

        val input = SimpleDateFormat("yyyy-MM-dd'T'HH:mm:ss'Z'", Locale.US)
        val output = SimpleDateFormat("dd/MM/yyyy", Locale.US)
        var d = Date()
        try
        {
            d = input.parse(articleList.get(4).publishedAt)
        }
        catch (e: ParseException) {
            e.printStackTrace()
        }
        val formatted = output.format(d)
        val timelinePoint = LocalDateTime.parse(formatted)
        val now = LocalDateTime.now()

        var elapsedTime = Duration.between(timelinePoint, now)

        println(timelinePoint)
        println(now)
        elapsedTime.toMinutes()

        holder.articleTime.text =  elapsedTime
    }

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

    @SuppressLint("NewApi")
    fun example( ) {
    }
    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)

    }
}

ниже класса модели Article.kt

data class Article(
    val author: String,
    val content: String,
    val description: String,
    val publishedAt: String,
    val source: Source,
    val title: String,
    val url: String,
    val urlToImage: String
)

1 Ответ

1 голос
/ 09 октября 2019

Вы можете использовать [ChronoUnit][1] класс из ThreeTenABP для расчета истекшего времени в минутах:

Если ваш сервер возвращает дату и время UTC:

val elapsedMinutes = ChronoUnit.MINUTES.between(createdAt, LocalDateTime.now(ZoneOffset.UTC))
...