Kotlin安卓开发:组件Spinner使用


本来是用得radioGroup,结果太多了,占地方,就改为了spinner。

Kotlin安卓开发:组件Spinner使用

null

xml:这里有一个弹出模式,一个是pop的一个是下拉。

       <Spinner
           android:id="@+id/sortSpinner"
           android:layout_width="wrap_content"
           android:layout_height="wrap_content"
           android:spinnerMode="dropdown">

        </Spinner>

null

kotlin:

  val searchSortSpinner = findViewById(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]
            }
        }

null

spinner设置监听器不能向listview和其它的组件一样直接使用lambda简化

这里有的监听器目前还不支持,大部分监听接口是可以直接使用的。

这里用的是kotlin的对象表达式:java中的匿名内部类。

看看那些支持简化的监听器写法:直接用lambda代替对象表达式

fab.setOnClickListener { _ ->
    //这个监听器有一个抽象方法未实现,可以使用lambda,lambda可以用在只有一个抽象方法的接口上

}
//spinner有多个,,,
listView?.onItemClickListener = AdapterView.OnItemClickListener {
_,_,position,_->


}
//listview

null


文章作者: 2winter
版权声明: 本博客所有文章除特別声明外,均采用 CC BY 4.0 许可协议。转载请注明来源 2winter !
  目录