Skip to content

Instantly share code, notes, and snippets.

View wajahatkarim3's full-sized avatar
:octocat:
Subscribe to my newsletter: remotekaro.substack.com

Wajahat Karim wajahatkarim3

:octocat:
Subscribe to my newsletter: remotekaro.substack.com
View GitHub Profile
implementation "com.google.android.play:core:1.8.0"
class FooterAdapter(val remarks: String) :
RecyclerView.Adapter<FooterAdapter.ViewHolder>() {
inner class ViewHolder(val binding: FooterLayoutBinding) :
RecyclerView.ViewHolder(binding.root) { }
override fun onCreateViewHolder(parent: ViewGroup, viewType: Int): ViewHolder {
return viewHolder(
FooterLayoutBinding.inflate(
class MainActivity : AppCompatActivity() {
private lateinit var binding: ActivityMainBinding
private lateinit var headerAdapter: HeaderAdapter
private lateinit var footerAdapter: FooterAdapter
private lateinit var listAdapter: ListAdapter
override fun onCreate(savedInstanceState: Bundle?) {
super.onCreate(savedInstanceState)
binding = ActivityMainBinding.inflate(layoutInflater)
val concatAdapter = ConcatAdapter(headerAdapter, usersAdapter, footerAdapter)
binding.mainRecyclerView.layoutManager = LinearLayoutManager(this)
binding.mainRecyclerView.adapter = concatAdapter
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:orientation="vertical">
<androidx.recyclerview.widget.RecyclerView
android:id="@+id/mainRecyclerView"
android:layout_width="match_parent"
android:layout_height="match_parent" />
fun setupRecyclerViewAdapters() {
val headerAdapter = HeaderAdapter()
val footerAdapter = FooterAdapter("Remarks from your data source")
val usersAdapter = UsersListAdapter()
usersAdapter.setUsersListData(someUsersList)
}
class UserListAdapter() : RecyclerView.Adapter<UserListAdapter.ViewHolder>() {
private var items= emptyList<User>()
inner class ViewHolder(val binding: UserListItemLayoutBinding) :
RecyclerView.ViewHolder(binding.root) { }
override fun onCreateViewHolder(parent: ViewGroup, viewType: Int): ViewHolder {
return ViewHolder(
UserListItemLayoutBinding.inflate(
LayoutInflater.from(parent.context),
class FooterAdapter(val remarks: String) :
RecyclerView.Adapter<FooterAdapter.ViewHolder>() {
inner class ViewHolder(val binding: FooterLayoutBinding) :
RecyclerView.ViewHolder(binding.root) { }
override fun onCreateViewHolder(parent: ViewGroup, viewType: Int): ViewHolder {
return viewHolder(
FooterLayoutBinding.inflate(
class HeaderAdapter() :
RecyclerView.Adapter<HeaderAdapter.ViewHolder>() {
inner class ViewHolder(val binding: HeaderLayoutBinding) :
RecyclerView.ViewHolder(binding.root) { }
override fun onCreateViewHolder(parent: ViewGroup, viewType: Int): ViewHolder {
return ViewHolder(
HeaderLayoutBinding.inflate(
LayoutInflater.from(parent.context),
<style name="AppTheme" parent="Theme.MaterialComponents.DayNight">
<!-- Customize your theme here. -->
...
</style>