class MainScreenAdapter(_songDetails: ArrayList<Songs>, _context: Context) :
RecyclerView.Adapter<MainScreenAdapter.MyViewHolder>() {
var songDetails: ArrayList<Songs>? = null
var mContext: Context? = null
init {
this.songDetails = _songDetails
this.mContext = _context
}
override fun onBindViewHolder(holder: MyViewHolder, position: Int) {
val songObject = songDetails?.get(position)
holder.trackTitle?.text = songObject?.songTitle
holder.trackArtist?.text = songObject?.artist
holder.contentHolder?.setOnClickListener({
val songPlayingFragment = SongPlayingFragment()
var args = Bundle()
args.putString("songArtist", songObject?.artist)
args.putString("path", songObject?.songData)
args.putString("songTitle", songObject?.songTitle)
args.putInt("SongId", songObject?.songID?.toInt() as Int)
args.putInt("songPosition", position)
args.putParcelableArrayList("songData", songDetails)
(mContext as FragmentActivity).supportFragmentManager
.beginTransaction()
.replace(R.id.details_fragment, songPlayingFragment)
.commit()
})} override fun onCreateViewHolder(parent: ViewGroup?, viewType: Int): MyViewHolder {
val itemView = LayoutInflater.from(parent?.context)
.inflate(R.layout.row_custom_mainscreen_adapter, parent, false)
return MyViewHolder(itemView)
}
override fun getItemCount(): Int {
if (songDetails == null) {
return 0
} else {
return (songDetails as ArrayList<Songs>).size
}}class MyViewHolder(view: View) : RecyclerView.ViewHolder(view) {
var trackTitle: TextView? = null
var trackArtist: TextView? = null
var contentHolder: RelativeLayout? = null
init {
trackTitle = view.findViewById<TextView>(R.id.trackTitle)
trackArtist = view.findViewById<TextView>(R.id.trackArtist)
contentHolder = view.findViewById<RelativeLayout>(R.id.contentRow)
}}}
针对:
override fun onCreateViewHolder(parent: ViewGroup?, viewType: Int): MyViewHolder
为什么显示不覆盖任何内容?
还用于:
class MainScreenAdapter(_songDetails: ArrayList, _context: Context)
它说它不是抽象的,并且没有实现抽象基类成员
答案 0 :(得分:1)
onCreateViewHolder()
的签名是错误的:
override fun onCreateViewHolder(parent: ViewGroup?, viewType: Int)
在?
之后删除ViewGroup
:
override fun onCreateViewHolder(parent: ViewGroup, viewType: Int)
来自RecyclerView.class
的{{1}}签名
您必须重写的是:
onCreateViewHolder()
如您所见,第一个参数@NonNull
public abstract VH onCreateViewHolder(@NonNull ViewGroup var1, int var2);
不可为空。