Last active
August 29, 2020 07:24
-
-
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:
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
#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