gpt4 book ai didi

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

转载 作者:行者123 更新时间:2023-12-02 13:25:30 24 4
gpt4 key购买 nike

我是编程的新手,试图弄清楚如何在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/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com