package org.ntlab.tag.adapter import android.content.Context import android.databinding.DataBindingUtil import android.support.v7.widget.RecyclerView import android.view.LayoutInflater import android.view.View import android.view.ViewGroup import org.ntlab.tag.R import org.ntlab.tag.api.regist.RoomApiResponse import org.ntlab.tag.contract.RoomListViewContract import org.ntlab.tag.databinding.RoomListItemBinding import org.ntlab.tag.viewmodel.ListItemViewModel /** * Created by matsumoto_k on 2017/07/07. */ class RoomListAdapter(var context: Context, var view: RoomListViewContract) : RecyclerView.Adapter<RoomListAdapter.ViewHolder>() { var items: ArrayList<RoomApiResponse>? = null inner class ViewHolder(itemView: View, viewModel: ListItemViewModel) : RecyclerView.ViewHolder(itemView) { var viewModel: ListItemViewModel? = null init { this.viewModel = viewModel } fun loadItem(item: RoomApiResponse) { viewModel?.loadItem(item) } } fun setItemAndRefresh(items: ArrayList<RoomApiResponse>) { this.items = items notifyDataSetChanged() } fun getItemAt(position: Int): RoomApiResponse? { return items?.get(position) } override fun onBindViewHolder(holder: ViewHolder?, position: Int) { val item = getItemAt(position) holder?.loadItem(item!!) } override fun onCreateViewHolder(parent: ViewGroup?, viewType: Int): ViewHolder { val binding = DataBindingUtil.inflate<RoomListItemBinding>(LayoutInflater.from(context), R.layout.room_list_item, parent, false) binding.viewModel = ListItemViewModel(view) return ViewHolder(binding.root, binding.viewModel!!) } override fun getItemCount(): Int { if (items == null) { return 0 } return items?.size!! } }