0

I'm new to Android development. I'm trying to add a Multi countdown timer in recycler view but it does not work. Editing and deleting items in the list are okay, but I have no idea how to add a countdown timer function.

When I click the play button for starting the countdown, nothing happens. I would really appreciate it if you could tell me with a simple example.

Here is Adapter.kt.

class UserAdapter(val c: Context, val userList:ArrayList<UserData>): RecyclerView.Adapter<UserAdapter.UserViewHolder>() {

inner class UserViewHolder(val v: View) : RecyclerView.ViewHolder(v) {
    var name: TextView
    var DeleteButton: ImageView
    var EditButton: ImageView
    var PlayButton: ImageView

    val start = 600_000L
    var timer = start
    lateinit var countDownTimer: CountDownTimer

    init {
        name = v.findViewById<TextView>(R.id.alarm_name)
        DeleteButton = v.findViewById(R.id.alarm_button_delete)
        EditButton=v.findViewById(R.id.alarm_button_edit)
        PlayButton=v.findViewById(R.id.alarm_button_start)

        DeleteButton.setOnClickListener { DeleteItem(it) }
        EditButton.setOnClickListener { EditItem(it) }
        PlayButton.setOnClickListener { PlayItem(it)}

    }

    private fun PlayItem(v: View) {
        countDownTimer = object : CountDownTimer(timer,1000){
            override fun onFinish() {
            }

            override fun onTick(millisUntilFinished: Long) {
            }

        }.start()


    }

    private fun DeleteItem(v: View) {
        userList.removeAt(adapterPosition)
        notifyDataSetChanged()
        Toast.makeText(c, "Deleted this Information", Toast.LENGTH_SHORT).show()
    }

    private fun EditItem(v: View){
        val position = userList[adapterPosition]
        val v = LayoutInflater.from(c).inflate(R.layout.add_item,null)
        val name = v.findViewById<EditText>(R.id.add_alarm_name)
                    AlertDialog.Builder(c)
                        .setView(v)
                        .setPositiveButton("Ok"){
                                dialog,_->
                            position.add_alram_name = name.text.toString()
                            notifyDataSetChanged()
                            Toast.makeText(c,"User Information is Edited",Toast.LENGTH_SHORT).show()
                            dialog.dismiss()

                        }
                        .setNegativeButton("Cancel"){
                                dialog,_->
                            dialog.dismiss()

                        }
                        .create()
                        .show()

                    true
                }
}

override fun onCreateViewHolder(parent: ViewGroup, viewType: Int): UserViewHolder {
    val inflater = LayoutInflater.from(parent.context)
    val v = inflater.inflate(R.layout.list_item, parent, false)
    return UserViewHolder(v)
}

override fun onBindViewHolder(holder: UserViewHolder, position: Int) {
    val newList = userList[position]
    holder.name.text = newList.add_alram_name
}

override fun getItemCount(): Int {
    return userList.size
}
ecm
  • 2,583
  • 4
  • 21
  • 29

1 Answers1

0

Seems like your adapter is not holding instance for each row items, as per recycling behavior the timer unable to hold the view position.

you can refer this