Android - kotlin RecyclerAdapter

極簡化版本

class RecycleAdapterReplyInterviewKT(val publicActivity: PublicActivity, val mData: ArrayList<ReplyInterviewItem>, val mItemClick: View.OnClickListener) : RecyclerView.Adapter<RecyclerView.ViewHolder>() {


    class ViewHolderHeader(view: View) : RecyclerView.ViewHolder(view) {
        val txtv_reply_interview_text = view.txtv_reply_interview_text

    }

    class ViewHolderListItem(view: View) : RecyclerView.ViewHolder(view) {
        val txtv_reply_interview_item_job_name = view.txtv_reply_interview_item_job_name
        val txtv_reply_interview_item_comp_name = view.txtv_reply_interview_item_comp_name
        val txtv_reply_interview_item_date = view.txtv_reply_interview_item_date
        val btn_reply_interview_not_accept = view.btn_reply_interview_not_accept
        val btn_reply_interview_accept = view.btn_reply_interview_accept
    }

    override fun onCreateViewHolder(parent: ViewGroup, viewType: Int): RecyclerView.ViewHolder {
        var layoutInflater = LayoutInflater.from(parent.context)
        if (viewType == 1) {
            return ViewHolderHeader(layoutInflater.inflate(R.layout.item_reply_interview_header, parent, false))
        } else {
            return ViewHolderHeader(layoutInflater.inflate(R.layout.item_reply_interview, parent, false))
        }
    }

    override fun onBindViewHolder(holder: RecyclerView.ViewHolder, position: Int) {
        if (holder is ViewHolderHeader) {
            val string_tmp = publicActivity.getString(R.string.reply_interview)
            val msp = SpannableString(string_tmp)
            msp.setSpan(ForegroundColorSpan(publicActivity.resources.getColor(R.color.black)), string_tmp.indexOf("「"), string_tmp.indexOf("」"), Spanned.SPAN_EXCLUSIVE_EXCLUSIVE)
            msp.setSpan(StyleSpan(Typeface.BOLD), string_tmp.indexOf("「"), string_tmp.indexOf("」"), Spanned.SPAN_EXCLUSIVE_EXCLUSIVE)
            holder.txtv_reply_interview_text.text = msp
        } else if (holder is ViewHolderListItem) {
            holder.txtv_reply_interview_item_job_name.text = getItem(position).job_name
            holder.txtv_reply_interview_item_comp_name.text = getItem(position).comp_name
            holder.txtv_reply_interview_item_date.text = getItem(position).interview_date
            holder.btn_reply_interview_accept.setOnClickListener(mItemClick)
            holder.btn_reply_interview_not_accept.setOnClickListener(mItemClick)
        }
    }

    override fun getItemCount() = mData.size

    override fun getItemViewType(position: Int) = mData[position].is_header

    fun getItem(pos: Int) = mData[pos]


}