2017-09-02 17 views
0

私はgetCount()= 3と設定すると、3番目のアイテムを取得するフラグメントとページのタイトルはどのように指定できますか?2つ以上の変数を持つKotlin switch-statement?

class ViewPagerAdapter(fm: FragmentManager) : FragmentPagerAdapter(fm) { 
     override fun getCount() = 3 
     override fun getItem(i: Int) = if (i == 0) KotlinListFragment() else if (i == 1) JavaListFragment() else (i == 2) AndroidFragment() 
     override fun getPageTitle(i: Int) = if (i == 0) "Kotlin" else (i == 1) "Java" else (i == 2) "Android" 

答えて

3

when expressionを使用します。

when (getCount()) { 
    0 -> return "a" 
    1 -> return "b" 
    2 -> return "c" 
    else -> return "" 
} 

または

return when (getCount()) { 
    0 -> "a" 
    // etc 
    else -> "" 
} 

または

when (getCount()) { 

    0 -> { 
    // do something here 
    } 
    // etc. 
    else -> {} 
} 
1

私は、これはあなたが本当に求めていたが、それは実際にあるかもしれないものではありません知っていますペアリストと代わりに通常の索引検索を行います。例

class ViewPagerAdapter(fm: FragmentManager) : FragmentPagerAdapter(fm) { 
    private val fragment = listOf("Kotlin" to KotlinListFragment(), 
     "Java" to JavaListFragment(), 
     "Android" to AndroidFragment()) 

    override fun getCount() = 3 
    override fun getItem(i: Int) = fragment[i].second() 
    override fun getPageTitle(i: Int) = fragment[i].first() 
} 

のためにそれはあなたがカウント範囲を制御するように見えますが、あなたはまた、リストの長さにし、代わりに長さを使用する長さより大きい場合、私を比較することができませんと仮定します。それは私が思うようにかなり管理しやすい方法であなたの「2変数」シナリオを容易に処理するはずです。

関連する問題