onCreateViewHolder不会覆盖任何内容

时间:2018-12-30 08:23:52

标签: android xml kotlin

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) 

它说它不是抽象的,并且没有实现抽象基类成员

1 个答案:

答案 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); 不可为空。