Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/android/186.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上使用计时器进入recyclerView_Android_Kotlin_Android Recyclerview_Kotlin Android Extensions - Fatal编程技术网

如何在Android上使用计时器进入recyclerView

如何在Android上使用计时器进入recyclerView,android,kotlin,android-recyclerview,kotlin-android-extensions,Android,Kotlin,Android Recyclerview,Kotlin Android Extensions,为什么不帮助我呢? 在我的应用程序中,我希望在每个recyclerView项目中显示计时器 我用Kotlin语言写下面的代码,但是当滚动recyclerView计时器重置并且从开始时间重新开始时,不要继续 我的问题是计时器重置,我想在滚动回收视图项目时,计时器未重置,我想继续计时器 我的适配器代码: class AuctionsTodayAdapter(val context: Context, val model: MutableList<AuctionsTodayResponse.Re

为什么不帮助我呢?

在我的应用程序中,我希望在每个
recyclerView
项目中显示计时器
我用Kotlin语言写下面的代码,但是当滚动
recyclerView
计时器重置并且开始时间重新开始时,不要继续
我的问题是计时器重置,我想在滚动
回收视图
项目时,计时器未重置,我想继续计时器

我的适配器代码:

class AuctionsTodayAdapter(val context: Context, val model: MutableList<AuctionsTodayResponse.Res.Today>) :
    RecyclerView.Adapter<AuctionsTodayAdapter.MyHolder>() {

    override fun onCreateViewHolder(parent: ViewGroup, viewType: Int): MyHolder {
        val view = LayoutInflater.from(context).inflate(R.layout.row_bidzila_list, parent, false)
        return MyHolder(view)
    }

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

    override fun onBindViewHolder(holder: MyHolder, position: Int) {
        val modelUse = model[position]
        holder.setData(modelUse)
    }

    override fun onViewAttachedToWindow(holder: MyHolder) {
        val pos = holder.adapterPosition
        val modelUse = model[pos]
        holder.handler.post { holder.timer(modelUse.calculateEnd, 1000) }
    }

    override fun onViewDetachedFromWindow(holder: MyHolder) {
        if (holder.timmer != null) {
            holder.timmer.cancel()
        }
    }

    inner class MyHolder(itemView: View) : RecyclerView.ViewHolder(itemView) {

        var handler = Handler(Looper.getMainLooper())
        lateinit var timmer: CountDownTimer

        fun setData(model: AuctionsTodayResponse.Res.Today) {
            model.image.let {
                Glide.with(context)
                    .load(Constants.BIDZILA_BASE_URL + it)
                    .apply(RequestOptions.diskCacheStrategyOf(DiskCacheStrategy.RESOURCE))
                    .into(itemView.rowBidzila_img)
            }
            model.title.let { itemView.rowBidzila_title.text = it }
        }

        fun timer(millisInFuture: Long, countDownInterval: Long): CountDownTimer {
            timmer = object : CountDownTimer(millisInFuture * 1000, countDownInterval) {
                override fun onTick(millisUntilFinished: Long) {
                    var seconds = (millisUntilFinished / 1000).toInt()
                    val hours = seconds / (60 * 60)
                    val tempMint = seconds - hours * 60 * 60
                    val minutes = tempMint / 60
                    seconds = tempMint - minutes * 60
                    itemView.rowBidzila_timer.rowBidzila_timer.text =
                        String.format("%02d", hours) + ":" + String.format(
                            "%02d",
                            minutes
                        ) + ":" + String.format("%02d", seconds)
                }

                override fun onFinish() {
                    itemView.rowBidzila_timer.rowBidzila_timer.text = "Finished"
                }
            }.start()

            return timmer
        }
    }
}
data class Today(
    @SerializedName("auction_status")
    val auctionStatus: String = "", // accept
    @SerializedName("base_price")
    val basePrice: Int = 0, // 120000
    @SerializedName("bid_number")
    val bidNumber: Int = 0, // 1
    @SerializedName("calculate_end")
    var calculateEnd: Long = 0, // -9815
    @SerializedName("can_offer_before")
    val canOfferBefore: Int = 0, // 1
    @SerializedName("capacity")
    val capacity: Int = 0, // 25
    @SerializedName("current_price")
    val currentPrice: Int = 0, // 224000
    @SerializedName("discount")
    val discount: Int = 0, // 400000
    @SerializedName("end")
    val end: Int = 0, // 1548650312
    @SerializedName("end_date")
    val endDate: String = "", // 2019-01-28 08:08:32
    @SerializedName("end_time")
    val endTime: String = "", // 2019-01-28 08:08:32
    @SerializedName("final_discount")
    val finalDiscount: Int = 0, // 176000
    @SerializedName("final_price")
    val finalPrice: Int = 0, // 224000
    @SerializedName("id")
    val id: Int = 0, // 2629
    @SerializedName("image")
    val image: String = "", // /img/product/5bd94ed3cb9d2.png
    @SerializedName("lastbid")
    val lastbid: Any = Any(), // null
    @SerializedName("live")
    val live: String = "",
    @SerializedName("max_price")
    val maxPrice: Int = 0, // 240000
    @SerializedName("max_price_percent")
    val maxPricePercent: Int = 0, // 60
    @SerializedName("name")
    val name: String = "",
    @SerializedName("number_of_users")
    val numberOfUsers: Int = 0, // 14
    @SerializedName("order")
    val order: Int = 0, // 0
    @SerializedName("price")
    val price: Int = 0, // 400000
    @SerializedName("product_id")
    val productId: Int = 0, // 671
    @SerializedName("registered")
    val registered: String = "", // null
    @SerializedName("registereduser")
    val registereduser: Int = 0, // 14
    @SerializedName("second_image")
    val secondImage: String = "",
    @SerializedName("start_date")
    val startDate: String = "", // 2019-01-28 08:00:00
    @SerializedName("tag")
    val tag: String = "",
    @SerializedName("tag_color")
    val tagColor: String = "", // ff3232
    @SerializedName("tag_description")
    val tagDescription: String = "",
    @SerializedName("title")
    val title: String = "",
    @SerializedName("winner_avatar")
    val winnerAvatar: String = "", // /img/avatar/009-social-11.png
    @SerializedName("winner_id")
    val winnerId: Int = 0, // 57582
    @SerializedName("winner_name")
    val winnerName: String = "", // Arashr1

    val running: Boolean = true,
    var thread: Thread
) {
    init {
        thread = Thread(Runnable {
            while (running) {
                calculateEnd--
                try {
                    Thread.sleep(1000)
                } catch (e: InterruptedException) {
                    e.printStackTrace()
                }
            }
        })
        thread.start()
    }
}

我如何修理它?

您可以使用模型。在这个模型中,你可以设置最后的计数值。在您的ViewHolder中,您将从模型的最后计算值开始计算时间。我希望您理解

这不是一个好的解决方案,但您可以使用
setIsRecycleable(false)
@KaranMer,我如何使用它?你能把我上面的代码寄给我吗?亲爱的朋友,我真的需要你的帮助,在oncreateviewholder中,你可以使用
holder.setIsRecyclable(false)找不到
holder
info
onCreateViewHolder
!使用你的viewholder对象谢谢亲爱的,但是你能帮我把上面的代码发给我吗?请亲爱的朋友,因为我是业余爱好者,真的需要你的帮助。请告诉我的朋友,我真的需要你的帮助,请把我上面的代码发给我。请谢谢,亲爱的。我会等你你在这里吗,我的朋友?你能帮助我吗?