mpao
9/15/2017 - 7:14 PM

RecyclerView full template ( Kotlin )

RecyclerView full template ( Kotlin )

data class Item(val text: String)

class MainActivity : AppCompatActivity() {

    private val items = listOf(
            Item("Lorem ipsum dolor sit amet,"),
            Item("consectetur adipiscing elit,"),
            Item("sed do eiusmod tempor incididunt ut labore et dolore magna aliqua."),
            Item("Ut enim ad minim veniam,"),
            Item("quis nostrud exercitation ullamco laboris"),
            Item("Snisi ut aliquip ex ea commodo consequat."),
            Item("Duis aute irure dolor in reprehenderit...")
    )
    override fun onCreate(savedInstanceState: Bundle?) {

        super.onCreate(savedInstanceState)
        setContentView(R.layout.activity_layout)

        mylist.layoutManager = LinearLayoutManager(this)
        mylist.adapter = MyAdapter(items)

    }

}
<?xml version="1.0" encoding="utf-8"?>

<FrameLayout
    xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:tools="http://schemas.android.com/tools"
    android:layout_width="match_parent"
    android:layout_height="match_parent">

    <android.support.v7.widget.RecyclerView
        android:id="@+id/mylist"
        tools:listitem="@layout/row"
        android:layout_width="match_parent"
        android:layout_height="match_parent"/>

</FrameLayout>
class MyAdapter(private val items: List<Item>) : RecyclerView.Adapter<MyAdapter.ViewHolder>() {

    override fun getItemCount(): Int = items.size

    override fun onCreateViewHolder(parent: ViewGroup, viewType: Int): ViewHolder{

        val view = LayoutInflater.from(parent.context).inflate(R.layout.row, parent, false)
        return ViewHolder(view)

    }

    override fun onBindViewHolder(holder: ViewHolder, position: Int) {

        holder.bind( items[position] )
        Log.i("test", items[position].text )

    }

    inner class ViewHolder(view: View) : RecyclerView.ViewHolder(view) {

        fun bind(item: Item) {
            itemView.value.text = item.text
            itemView.value.setOnClickListener {
                view -> Toast.makeText(view.context, item.text, Toast.LENGTH_SHORT).show()
            }
        }

    }

}
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
              android:orientation="vertical"
              android:layout_width="match_parent"
              android:layout_height="wrap_content">

    <TextView
        android:id="@+id/value"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"/>

</LinearLayout>