Skip to content

Instantly share code, notes, and snippets.

@oohyugi
Last active August 29, 2020 07:24
Show Gist options
  • Save oohyugi/b2d9e62fb6b3a001a315b2c47dc17adb to your computer and use it in GitHub Desktop.
Save oohyugi/b2d9e62fb6b3a001a315b2c47dc17adb to your computer and use it in GitHub Desktop.
Live template recycerview adapter , Type cmd + shift + A to find action , enter Add Template and press Enter button. Preferences window with File and Code Templates tab will be opened. Press ctrl + N to add a new template. Name it ,, RecyclerView Adapter “ and add the following code:
#if (${PACKAGE_NAME} && ${PACKAGE_NAME} != "")package ${PACKAGE_NAME}#end
import android.view.LayoutInflater
import android.view.View
import android.view.ViewGroup
import androidx.recyclerview.widget.DiffUtil
import androidx.recyclerview.widget.ListAdapter
import androidx.recyclerview.widget.RecyclerView
#parse("File Header.java")
class ${NAME}(val listener: ${NAME}Listener) :
ListAdapter<${MODEL}, ${NAME}.ViewHolder>(DiffUtils${NAME}()) {
override fun onCreateViewHolder(parent: ViewGroup, viewType: Int): ViewHolder {
return ViewHolder.from(parent)
}
override fun onBindViewHolder(holder: ViewHolder, position: Int) {
val data = getItem(position)
holder.bind(data,listener)
}
class ViewHolder(itemView: View) : RecyclerView.ViewHolder(itemView) {
companion object {
fun from(parent: ViewGroup): ViewHolder {
return ViewHolder(LayoutInflater
.from(parent.context)
.inflate(R.layout.${item_layout}, parent, false))
}
}
fun bind(
data: ${MODEL}?,
listener: ${NAME}Listener
) {
// todo : setup item
}
}
class DiffUtils${NAME} : DiffUtil.ItemCallback<${MODEL}>() {
override fun areItemsTheSame(oldItem: ${MODEL}, newItem: ${MODEL}): Boolean {
// todo: return example id
return
}
override fun areContentsTheSame(oldItem: ${MODEL}, newItem: ${MODEL}): Boolean {
// todo: return
return oldItem == newItem
}
}
class ${NAME}Listener(val clickListener: (item : ${MODEL}?)-> Unit){
fun onItemClickListener(item: ${MODEL}?) = clickListener(item)
}
}
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment