一覧から詳細を起動する一覧側(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)
}
}
}
}