Created
October 1, 2017 05:58
-
-
Save oogatta/ce6a79da7ba47434dcb47a138b2fbc68 to your computer and use it in GitHub Desktop.
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
class MainActivity : AppCompatActivity() { | |
lateinit var adapter: RecyclerView.Adapter<RecyclerView.ViewHolder> | |
var vmList = arrayListOf<MySweetViewModelable>() | |
override fun onCreate(savedInstanceState: Bundle?) { | |
// Title | |
vmList.add(TitleViewModel("Hello, Ebisu!")) | |
// ... | |
adapter = MySweetAdapter(vmList) | |
my_sweet_recycler_view.adapter = adapter | |
} | |
} | |
interface MySweetViewModelable {} | |
class TitleViewModel(val text: String): MySweetViewModelable | |
// ... | |
class MySweetAdapter(val vmList: List<MySweetViewModelable>) : RecyclerView.Adapter<RecyclerView.ViewHolder>() { | |
// ... | |
class TitleViewHolder(val binding: TitleBinding) : RecyclerView.ViewHolder(binding.root) { | |
fun bind(vm: TitleViewModel) { | |
binding.vm = vm | |
} | |
} | |
// x2 | |
override fun onBindViewHolder(holder: RecyclerView.ViewHolder?, position: Int) { | |
when (holder!!.itemViewType) { | |
ViewType.TITLE.type -> { | |
println("onBindViewHolder: TITLE") | |
(holder as? TitleViewHolder)?.bind(vmList[position] as TitleViewModel) | |
} | |
ViewType.FEED.type -> { // ... } | |
ViewType.FOOTER.type -> { // ... } | |
} | |
} | |
override fun getItemCount(): Int = vmList.size | |
override fun getItemViewType(position: Int): Int { | |
return when (position) { | |
0 -> ViewType.TITLE.type | |
in 1..vmList.size - 2 -> ViewType.FEED.type | |
vmList.size - 1 -> ViewType.FOOTER.type | |
else -> ViewType.FEED.type | |
} | |
} | |
override fun onCreateViewHolder(parent: ViewGroup?, viewType: Int): RecyclerView.ViewHolder { | |
return when (viewType) { | |
ViewType.TITLE.type -> TitleViewHolder(TitleBinding.inflate(LayoutInflater.from(parent!!.context), parent, false)) | |
ViewType.FEED.type -> FeedViewHolder(FeedBinding.inflate(LayoutInflater.from(parent!!.context), parent, false)) | |
ViewType.FOOTER.type -> FooterViewHolder(FooterBinding.inflate(LayoutInflater.from(parent!!.context), parent, false)) | |
} | |
} | |
} |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment