本來是用得radioGroup,結果太多了,占地方,就改為了spinner。
xml:這裡有一個彈出模式,一個是pop的一個是下拉。
<Spinner
android:id="@+id/sortSpinner"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:spinnerMode="dropdown">
</Spinner>
kotlin:
val searchSortSpinner = findViewById<Spinner>(R.id.sortSpinner)//擷取spinner
val searchSortSpinnerData = arrayOf("正題名","出版日期","作者","出版社","索取号")
searchSortSpinner.adapter = searchSortSpinnerAdapter//擴充卡
searchSortSpinner.onItemSelectedListener = object:AdapterView.OnItemSelectedListener{
override fun onItemSelected(parent: AdapterView<*>?, view: View?, position: Int, id: Long) {
//切換選擇
searchSort = searchSortSpinnerData[position]
}
override fun onNothingSelected(parent: AdapterView<*>?) {
searchSort = searchSortSpinnerData[0]
}
}
spinner設定監聽器不能向listview和其它的元件一樣直接使用lambda簡化
這裡有的監聽器目前還不支援,大部分監聽接口是可以直接使用的。
這裡用的是kotlin的對象表達式:java中的匿名内部類。
看看那些支援簡化的監聽器寫法:直接用lambda代替對象表達式
fab.setOnClickListener { _ ->
//這個監聽器有一個抽象方法未實作,可以使用lambda,lambda可以用在隻有一個抽象方法的接口上
}
//spinner有多個,,,
listView?.onItemClickListener = AdapterView.OnItemClickListener {
_,_,position,_->
}
//listview