Last active
July 30, 2018 22:33
-
-
Save alwarren/b65aeb4d7cf412eda191cd3bdb3ed194 to your computer and use it in GitHub Desktop.
Kotlin RecyclerView with LayoutInflater extension.
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 RecyclerAdapter(private val users: ArrayList<User>) : RecyclerView.Adapter<RecyclerAdapter.UserHolder>() { | |
override fun getItemCount(): Int { | |
return users.size | |
} | |
override fun onCreateViewHolder(parent: ViewGroup, viewType: Int): RecyclerAdapter.UserHolder { | |
// see Extensions.kt | |
val inflatedView = parent.inflate(R.layout.list_row, false) | |
return UserHolder(inflatedView) | |
} | |
fun insertUser(user: User) { | |
users.add(user) | |
notifyItemInserted(users.size - 1) | |
} | |
fun clear() { | |
val size = users.size | |
users.clear() | |
notifyItemRangeRemoved(0, size) | |
} | |
override fun onBindViewHolder(holder: RecyclerAdapter.UserHolder, position: Int) { | |
val user = users[position] | |
val firstName = user.firstName + " #" + user.id | |
holder.itemView.first_name.text = firstName | |
holder.itemView.last_name.text = user.lastName | |
holder.itemView.email.text = user.email | |
holder.itemView.setOnClickListener({ | |
Log.d("RecyclerView", "CLICK ${user.firstName}!") | |
val intent = Intent(holder.itemView.context, DetailActivity::class.java) | |
intent.putExtra(DetailActivity.USER, user.id) | |
holder.itemView.context.startActivity(intent) | |
}) | |
} | |
class UserHolder(v: View) : RecyclerView.ViewHolder(v) | |
} |
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
fun ViewGroup.inflate(@LayoutRes layoutRes: Int, attachToRoot: Boolean = false): View { | |
return LayoutInflater.from(context).inflate(layoutRes, this, attachToRoot) | |
} |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment