gpt4 book ai didi

java - 微调框已选择项目选择事件

转载 作者:行者123 更新时间:2023-12-02 13:25:07 25 4
gpt4 key购买 nike

方案:
我正在使用Spinner进行日期范围选择,效果很好。问题是,有一个选项“自定义范围”必须打开自定义日期范围选择器。虽然这是第一次工作正常。
enter image description here
enter image description here
问题是:
当用户再次单击它时,它不会调用onItemSelected(parent: AdapterView<*>?, view: View?, position: Int, id: Long)(这是Spinner的功能)。但是从用户的 Angular 来看,这是一个错误。
有什么办法,我们可以在已经选择的Spinner项目上获得任何选择事件吗?

最佳答案

要在Spinner中已选择的项目上调用事件,您可以通过以下方式进行操作:

  • 通过扩展AppCompatSpinner创建自己的Spinner类:
  • import android.content.Context
    import android.util.AttributeSet
    import android.util.Log

    class MySpinner(context: Context, attrs: AttributeSet?) : androidx.appcompat.widget.AppCompatSpinner(
    context,
    attrs
    )
    {
    var listener: OnItemSelectedListener? = null

    override fun setSelection(position: Int)
    {
    super.setSelection(position)
    if (position == selectedItemPosition)
    {
    listener!!.onItemSelected(this, selectedView, position, selectedItemId)
    }
    }

    override fun setOnItemSelectedListener(listener: OnItemSelectedListener?)
    {
    this.listener = listener
    }
    }
  • 在您的布局中使用它:
  • <com.yourcompany.kotlintest.MySpinner
    android:id="@+id/spinner"
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    />
  • 创建布局时,请执行以下操作:
  • class MainActivity : AppCompatActivity()
    {
    override fun onCreate(savedInstanceState: Bundle?)
    {
    super.onCreate(savedInstanceState)
    setContentView(R.layout.activity_main)

    val spinner = findViewById<MySpinner>(R.id.spinner)

    spinner.adapter = ArrayAdapter(
    this,
    android.R.layout.simple_spinner_dropdown_item,
    arrayListOf("One", "Two", "Three")
    )

    spinner.onItemSelectedListener = object :
    AdapterView.OnItemSelectedListener
    {
    override fun onItemSelected(
    parent: AdapterView<*>,
    view: View, position: Int, id: Long
    )
    {
    Log.d("MyTag", "Click item at pos $position")
    }

    override fun onNothingSelected(parent: AdapterView<*>)
    {
    Log.d("MyTag", "Nothing selected")
    }
    }
    }
    }
    现在,当您重新选择相同项目时,将执行功能

    关于java - 微调框已选择项目选择事件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/64550613/

    25 4 0
    Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
    广告合作:1813099741@qq.com 6ren.com