Как загрузить аудио файлы с помощью Asyn c Задача с RecyclerView - PullRequest
0 голосов
/ 26 февраля 2020

Я начинаю учиться kotlin android, и я не знаю, что я делаю неправильно, когда я реализую AsycnTask.

Я не могу вызвать функцию execute() Пожалуйста, помогите мне исправить это и показать мне, как реализовать

2 класс в моем адаптере

  1. Мой viewHolder

    inner class SongViewHolder(itemView: View) : RecyclerView.ViewHolder(itemView) {
    private val tvTitle: TextView = itemView.findViewById(R.id.tvTitle)
    private val tvArtist: TextView = itemView.findViewById(R.id.tvArtist)
    private val imgSong: ImageView = itemView.findViewById(R.id.imgSong)
    
    fun binData() {
        val song = songList[adapterPosition]
        val task = myTask().asyncTask(tvTitle,tvArtist,imgSong,song,mContext)
        //Can't call execute()
        tvTitle.text = song.title
        tvArtist.text = song.artist
        val bitmap = Utils.songArt(Uri.parse(song.path), mContext)
        if (bitmap != null) {
            imgSong.setImageBitmap(bitmap)
        } else {
            imgSong.setImageResource(R.drawable.default_song)
        }
    }
    
  2. Мой asyncTask

    class myTask() : AsyncTask<Int, Void, Void>() {
    
        lateinit var tvTitle: TextView
        lateinit var tvArtist: TextView
        lateinit var imgSong: ImageView
        lateinit var song: Song
        lateinit var context: Context
    
        fun asyncTask(tvTitle: TextView, tvArtist: TextView, imgSong: ImageView, song: Song,context: Context) {
            this.tvTitle = tvTitle
            this.tvArtist = tvArtist
            this.imgSong = imgSong
            this.song = song
            this.context = context
        }
    
        override fun doInBackground(vararg params: Int?): Void? {
            val song = song
            tvTitle.text = song.title
            tvArtist.text = song.artist
            val bitmap = Utils.songArt(Uri.parse(song.path), context)
            if (bitmap != null) {
                imgSong.setImageBitmap(bitmap)
            } else {
                imgSong.setImageResource(R.drawable.default_song)
            }
            return null
        }
    
...