How to used RecyclerView via Kotlin ?
In this tutorial explain how to bind RecyclerView via kotlin.
RecyclerAdapter.kt
RecyclerAdapter.kt
class RecyclerAdapter(val items: ArrayList, val context :Context, val btnlistener: BtnClickListener) :RecyclerView.Adapter () { companion object { var mClickListener: BtnClickListener? = null } override fun onCreateViewHolder(parent: ViewGroup, viewType: Int): ViewHolder { return ViewHolder(LayoutInflater.from(context).inflate(R.layout.animal_list_item, parent, false)) } override fun getItemCount(): Int { return items.size } override fun onBindViewHolder(holder: ViewHolder, position: Int) { mClickListener = btnlistener holder?.tvAnimalType.text = items.get(position) holder?.tvAnimalType.setOnClickListener(object : View.OnClickListener { override fun onClick(v: View?) { if (mClickListener != null) mClickListener?.onBtnClick(position,holder?.tvAnimalType.text.toString()) } }) } class ViewHolder (view: View) : RecyclerView.ViewHolder(view) { val tvAnimalType = view.tv_animal_type } open interface BtnClickListener { fun onBtnClick(position: Int,string: String) } }
layout_row.xml
xml version="1.0" encoding="utf-8";
xmlns:android="http://schemas.android.com/apk/res/android" android:layout_width="match_parent"
android:layout_height="wrap_content">
TextView android:id="@+id/tv_animal_type"android:layout_width="match_parent"android:layout_height="wrap_content"android:textSize="20sp"android:padding="20dp"</LinearLayout >
MainActivity .kt
class MainActivity : AppCompatActivity(), RecyclerAdapter.BtnClickListener { override fun onBtnClick(position: Int, string: String) { Toast.makeText(this, "hello" + position + string, Toast.LENGTH_LONG).show() } val animals: ArrayList= ArrayList() override fun onCreate(savedInstanceState: Bundle?) { super.onCreate(savedInstanceState) setContentView(R.layout.activity_main) setSupportActionBar(toolbar) addAnimal(); rv_animal_list.layoutManager = LinearLayoutManager(this) rv_animal_list.adapter = RecyclerAdapter(animals, this, this) } fun addAnimal() { animals.add("dog") animals.add("cat") animals.add("owl") animals.add("cheetah") animals.add("raccoon") animals.add("bird") animals.add("snake") animals.add("lizard") animals.add("hamster") animals.add("bear") animals.add("lion") animals.add("tiger") animals.add("horse") animals.add("frog") animals.add("fish") animals.add("shark") } } activity_main.xml
xml version="1.0" encoding="utf-8"
?><android.support.design.widget.CoordinatorLayout
xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:app="http://schemas.android.com/apk/res-auto"
xmlns:tools="http://schemas.android.com/tools"
android:layout_width="match_parent"
android:layout_height="match_parent" t
ools:context=".activites.OneActivity">
<android.support.design.widget.AppBarLayout
android:layout_height="wrap_content"
android:layout_width="match_parent"
android:theme="@style/AppTheme.AppBarOverlay">
<android.support.v7.widget.Toolbar
android:id="@+id/toolbar"
android:layout_width="match_parent"
android:layout_height="?attr/actionBarSize"
android:background="?attr/colorPrimary"
app:popupTheme="@style/AppTheme.PopupOverlay"/> </android.support.design.widget.AppBarLayout> <include layout="@layout/content_one"/> <android.support.design.widget.FloatingActionButton
android:id="@+id/fab"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_gravity="bottom|end"
android:layout_margin="@dimen/fab_margin"
app:srcCompat="@android:drawable/ic_dialog_email"/> </android.support.design.widget.CoordinatorLayout>