package org.ntlab.leftoverrecipe.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 kotlinx.android.synthetic.main.search_list_item.view.* import org.ntlab.leftoverrecipe.R import org.ntlab.leftoverrecipe.api.recipe.RecipeApiResponse import org.ntlab.leftoverrecipe.contract.SearchListViewContract import org.ntlab.leftoverrecipe.databinding.SearchListItemBinding import org.ntlab.leftoverrecipe.viewmodel.ListItemViewModel /** * Created by matsumoto_k on 2017/05/20 */ class SearchListAdapter(var context: Context, var view: SearchListViewContract) : RecyclerView.Adapter<SearchListAdapter.ViewHolder>() { var items: ArrayList<RecipeApiResponse.RecipeData>? = null inner class ViewHolder(itemView: View, viewModel: ListItemViewModel) : RecyclerView.ViewHolder(itemView) { var viewModel: ListItemViewModel? = null var imageVieww = itemView?.rootView?.listImageView init { this.viewModel = viewModel } fun loadItem(item: RecipeApiResponse.RecipeData) { viewModel?.loadItem(item) } } fun setItemAndRefresh(items: ArrayList<RecipeApiResponse.RecipeData>) { println("きたよ") this.items = items notifyDataSetChanged() } fun getItemAt(position: Int): RecipeApiResponse.RecipeData? { 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<SearchListItemBinding>(LayoutInflater.from(context), R.layout.search_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!! } }