Skip to content

Instantly share code, notes, and snippets.

View mustafakuloglu's full-sized avatar
🎯
Focusing

Mustafa Kuloğlu mustafakuloglu

🎯
Focusing
  • Carly Connected Car
  • Munich
View GitHub Profile
@mustafakuloglu
mustafakuloglu / MainActivityAdapter.kt
Created July 12, 2018 12:23
Sample List Adapter Class
class MainActivityAdapter : ListAdapter<Image, RecyclerView.ViewHolder>(MainCallback()) {
override fun onCreateViewHolder(parent: ViewGroup, viewType: Int): RecyclerView.ViewHolder{
val viewModel = MainActivityImageViewModel(parent.context.applicationContext as App)
val binding = DataBindingUtil.inflate<ItemImageBinding>(LayoutInflater.from(parent.context), R.layout.item_image, parent, false)
binding.viewModel = viewModel
return ViewHolder(binding)
}
override fun onBindViewHolder(holder: RecyclerView.ViewHolder, position: Int) {
((holder as ViewHolder).binding as ItemImageBinding).viewModel?.setItem(getItem(position))
@mustafakuloglu
mustafakuloglu / MainCallback.kt
Created July 12, 2018 12:21
Sample DiffUtil.ItemCallback Class
class MainCallback : DiffUtil.ItemCallback<Image>() {
override fun areItemsTheSame(oldItem: Image, newItem: Image): Boolean {
return oldItem.id == newItem.id
}
override fun areContentsTheSame(oldItem: Image, newItem: Image): Boolean {
return oldItem == newItem
}
}
@mustafakuloglu
mustafakuloglu / MainActivityAdapter.kt
Created July 12, 2018 08:49
Main Activity Adapter
class MainActivityAdapter : ListAdapter<BaseRecyclerEntity, RecyclerView.ViewHolder>(object : DiffUtil.ItemCallback<BaseRecyclerEntity>() {
override fun areItemsTheSame(oldItem: BaseRecyclerEntity, newItem: BaseRecyclerEntity): Boolean {
return oldItem.id == newItem.id
}
override fun areContentsTheSame(oldItem: BaseRecyclerEntity, newItem: BaseRecyclerEntity): Boolean {
return oldItem == newItem
}
})
binding.viewModel = viewModel
binding.viewModel?.create()
binding.recyclerView.adapter = MainActivityAdapter()
@mustafakuloglu
mustafakuloglu / BindingAdapter.kt
Created July 12, 2018 07:26
Binding adapter for set list
@JvmStatic
@BindingAdapter("app:set_list")
fun setList(recyclerView: RecyclerView, list: List<BaseRecyclerEntity>?) {
val adapter = recyclerView.adapter as MainActivityAdapter
list?.let {
adapter.submitList(list)
}
}
@mustafakuloglu
mustafakuloglu / BindingAdapter.kt
Created July 12, 2018 07:25
Picasso Binding Adapter
@JvmStatic
@BindingAdapter("app:set_src")
fun setSrc(imageView: ImageView, path: String) {
if (path.isNotEmpty()) {
Picasso.get().load(path).into(imageView)
}
}
@mustafakuloglu
mustafakuloglu / activity_main.xml
Created July 12, 2018 07:24
Main Activity Design
<?xml version="1.0" encoding="utf-8"?>
<layout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:tools="http://schemas.android.com/tools"
xmlns:app="http://schemas.android.com/apk/res-auto">
<data>
<variable
name="viewModel"
type="com.generalmobile.app.recyclermultiitems.ui.main.MainActivityViewModel" />
</data>
@mustafakuloglu
mustafakuloglu / MainActivityViewModel.kt
Created July 12, 2018 07:23
Main Activity View Model
class MainActivityViewModel(app: Application) : BaseViewModel(app) {
val list: ObservableList<BaseRecyclerEntity> = ObservableArrayList()
fun create(){
list.addAll(ListProvider().getList())
}
}
class ListProvider{
fun getList(): ArrayList<BaseRecyclerEntity> {
val list = arrayListOf<BaseRecyclerEntity>()
list.add(Header(0,Type.HEADER,"Lion"))
list.add(Image(1,Type.IMAGE,"https://cdn.images.express.co.uk/img/dynamic/galleries/x701/67639.jpg"))
list.add(Image(2,Type.IMAGE,"https://thenypost.files.wordpress.com/2018/02/man-eaten-by-lions.jpg?quality=90&strip=all"))
list.add(Image(3,Type.IMAGE,"http://chandigarhbytes.com/wp-content/uploads/2017/07/Federico_Veronesi_2009-01-28-Masai-Mara_4728.jpg"))
list.add(Header(4,Type.HEADER,"Tiger"))
list.add(Image(5,Type.IMAGE,"http://kids.sandiegozoo.org/sites/default/files/2017-06/animal-hero-tiger_0.jpg"))
object Type {
const val HEADER = 0
const val IMAGE = 1
}