Newer
Older
LeftoverRecipe / app / src / main / kotlin / org / ntlab / leftoverrecipe / adapter / SearchListAdapter.kt
MatsumotoKeiju on 9 Jul 2017 2 KB [add] LeftoverRecipe Project
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!!
    }
}