一覧から詳細の起動_一覧側(MainActivity)

一覧から詳細を起動する一覧側(MainActivity.kt)の実装。

ListViewのsetOnItemClickListener()の書き方。
setOnItemClickListener()の引数はAdapterView.OnItemClickListenerオブジェクトを取る。
OnItemClickListenerオブジェクトは1つの仮想関数(Single Abstract Method)を持っていて、
それを実装したものを渡すことになる。
本来、OnItemClicListenerを派生したオブジェクトでSAMを実装したものを渡す、という
とても長い記述になるのだけれども、仮想関数が1個だけならば代わりにラムダ式を1個渡せば良い。
(SAM変換)。

ActivityからIntentを取得してIntentからActivityを起動する、という書き方。
Intentを取得するときにパラメタ(今回の場合はArticleインスタンス)が渡る。


package com.example.ikuty.myapplication

import android.support.v7.app.AppCompatActivity
import android.os.Bundle

import android.widget.ListView
import com.example.ikuty.myapplication.model.Article

class MainActivity : AppCompatActivity() {

    override fun onCreate(savedInstanceState: Bundle?) {
        super.onCreate(savedInstanceState)
        setContentView(R.layout.activity_main)

        val listAdapter = ArticleListAdapter(applicationContext)
        val dummyArticle1 = dummyArticle("ikuty.com記事1","ikuty1")
        val dummyArticle2 = dummyArticle("ikuty.com記事2","ikuty2")

        listAdapter.articles = listOf(dummyArticle1,dummyArticle2)
        val listView: ListView = findViewById(R.id.list_view) as ListView
        listView.adapter = listAdapter
        listView.setOnItemClickListener {
            adapterView,view, position, id ->
                val article = listAdapter.articles[position]
                ArticleActivity.intent(this, article).let {
                    startActivity(it)
                }
        }
    }
}