android - 如何将基本适配器更改为Recycler View适配器?

标签 android kotlin android-recyclerview

我是编程的新手,试图弄清楚如何在recyclerview中流式传输.mp3文件
如何将我的基本适配器转换为Recycler View适配器?有没有简单的方法?
我需要这样做,因为最终在回收站的每个 View 中我都需要一个搜索栏
我在主要 Activity 中的基本适配器:

class MainActivity : AppCompatActivity() {

    var listSongs = ArrayList<SongFile>()
    var adapter : MySongAdapter? = null
    var mp : MediaPlayer? = null


    override fun onCreate(savedInstanceState: Bundle?) {
        super.onCreate(savedInstanceState)
        setContentView(R.layout.activity_main)

        listSongs.add(SongFile("title1","https://firebasestorage...."))
        listSongs.add(SongFile("title2","https://firebasestorage...."))
        listSongs.add(SongFile("title3","https://firebasestorage...."))
        listSongs.add(SongFile("title4","https://firebasestorage....."))

        adapter = MySongAdapter(listSongs)
        listview.adapter = adapter

    }

    inner class MySongAdapter : BaseAdapter {


        var myListSong = ArrayList<SongFile>()

        constructor(myListSong: ArrayList<SongFile>) : super() {
            this.myListSong = myListSong
        }

        override fun getView(position: Int, convertView: View?, parent: ViewGroup?): View {
            var myview = layoutInflater.inflate(R.layout.mylayout,null)
            var Song = this.myListSong[position]
            myview.textView.text = Song.Title
            myview.button.setOnClickListener {
                if(myview.button.text == "STOP") {
                    mp!!.stop()
                    myview.button.text = "PLAY"
                }
                else{
                    mp = MediaPlayer()
                    try {
                        mp!!.setDataSource(Song.SongURL)
                        mp!!.prepare()
                        mp!!.start()
                        myview.button.text = "STOP"
                    }catch (e:Exception){}
                }
            }
            return myview
        }

        override fun getItem(p0: Int): Any {
            return myListSong[p0]
        }

        override fun getItemId(p0: Int): Long {
            return p0.toLong()
        }

        override fun getCount(): Int {
            return myListSong.size
        }
    }


}
我的空Recycler View适配器:
class Adapter(context: Context, private val List: ArrayList<Model>) : RecyclerView.Adapter<Adapter.ViewHodler>() {

    private val mContext: Context

    init {
        mContext = context
    }
    override fun onCreateViewHolder(parent: ViewGroup, p1: Int): Adapter.ViewHodler {
        val row = LayoutInflater.from(mContext).inflate(R.layout.list_item,parent,false)
        return ViewHodler(row)
    }

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


    inner class ViewHodler(v : View) : RecyclerView.ViewHolder(v) {
        val viewTitle = v.title
    }

    override fun onBindViewHolder(holder: ViewHodler, position: Int) {
        val model = List[position]
        holder.viewTitle!!.text = model.Title
    }
}

最佳答案

`
inner class ViewHodler(v : View) : RecyclerView.ViewHolder(v) {
    val viewTitle = v.findViewById(R.id.title) as TextView
    val button = v.findViewById(R.id.button) as Button
}

override fun onBindViewHolder(holder: ViewHodler, position: Int) {
    val model = List[position]
    holder.viewTitle?.text = model.Title
    holder.button.setOnClickListener {
        if(holder.button.text == "STOP") {
           mp?.stop()
           myview.button.text = "PLAY"
        }else{
           mp = MediaPlayer()
           try {
              mp?.setDataSource(Song.SongURL)
              mp?.prepare()
              mp?.start()
              myview.button.text = "STOP"
           }catch (e:Exception){}
         }
     }
 }`
您还可以避免onBindViewHolder()中的代码,并创建一个类似于ViewHolder的方法onBind(file : SongFile)并将对象传递给此方法。

关于android - 如何将基本适配器更改为Recycler View适配器?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/64400378/

相关文章:

android - 无法设置 AppBarLayout 内的工具栏标题

android - 权限名称 C2D_MESSAGE 不唯一出现在两个 C2D_MESSAGE 中

android - 从 MediaPlayer 原始元素获取字符串值

java - Android RecyclerView 中的不同布局问题

Android Studio aar 使用 javadoc 进行模糊库发布

android - 智能转换为 kotlin.String

java - 使用通配符的 Kotlin 泛型自定义类型

android - 如何将可变列表传递给 bundle ?

java - 如何从 Activity 的弹出菜单中选择回收者 View 的复选框?

android - RecyclerView 小部件行上的斑马条纹颜色效果