Skip to content

Instantly share code, notes, and snippets.

@iammert
Created September 19, 2017 20:24
Show Gist options
  • Star 0 You must be signed in to star a gist
  • Fork 0 You must be signed in to fork a gist
  • Save iammert/4d3e2bfba5ea32bf2fd48abef3b2be8d to your computer and use it in GitHub Desktop.
Save iammert/4d3e2bfba5ea32bf2fd48abef3b2be8d to your computer and use it in GitHub Desktop.
Adapter
class SortedListSampleAdapter : RecyclerView.Adapter<SortedListSampleAdapter.UserViewHolder>() {
private val userSortedList: SortedList<User>
init {
userSortedList = SortedList(User::class.java, object : SortedListAdapterCallback<User>(this) {
override fun compare(o1: User, o2: User): Int = o1.score - o2.score;
override fun areContentsTheSame(oldItem: User, newItem: User): Boolean = oldItem.id == newItem.id
override fun areItemsTheSame(item1: User, item2: User): Boolean = item1 == item2
})
}
override fun onCreateViewHolder(parent: ViewGroup, viewType: Int): UserViewHolder {
val view = LayoutInflater.from(parent.context).inflate(R.layout.item_user, parent, false)
return UserViewHolder(view)
}
override fun onBindViewHolder(holder: UserViewHolder, position: Int) {
holder.setUser(userSortedList.get(position))
}
override fun getItemCount() = userSortedList.size()
fun addUser(user: User) {
userSortedList.add(user)
}
fun addUsers(users: List<User>) {
userSortedList.addAll(users)
}
fun removeUser(index: Int) {
if (userSortedList.size() == 0) {
return
}
userSortedList.remove(userSortedList.get(index))
}
class UserViewHolder(itemView: View) : RecyclerView.ViewHolder(itemView) {
var textViewUsername: TextView = itemView.findViewById(R.id.textViewUserName)
var textViewBirthDate: TextView = itemView.findViewById(R.id.textViewBirthDate)
var textViewScore: TextView = itemView.findViewById(R.id.textViewScore)
fun setUser(user: User) {
textViewUsername.text = user.name
textViewBirthDate.text = "Age: " + user.age
textViewScore.text = "Score:" + user.score
}
}
}
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment