场景:我正在使用Spinner来选择日期范围,它运行得很好。问题是,有一个选项“自定义范围”,我必须打开一个自定义日期范围选择器。虽然它第一次运转良好。
的问题是:当用户再次单击它时,它不会调用onItemSelected(parent: AdapterView<*>?, view: View?, position: Int, id: Long)
(这是自旋器的一个功能)。但从用户的角度来看,这是一个bug。
有没有办法,我们可以得到任何选择事件的一个已经选定的项目旋转器?
发布于 2020-10-27 09:01:19
要调用Spinner
中已经选定的项上的事件,可以这样做:
通过扩展AppCompatSpinner
创建您自己的
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")
}
}
}
}
现在,当您重新选择相同的项函数时,将执行
发布于 2020-10-27 08:44:54
你用过
spinner.setOnItemSelectedListener(new OnItemSelectedListener() {
@Override
public void onItemSelected(AdapterView<?> parentView, View selectedItemView, int position, long id) {
// your code here with selected **item position**
}
@Override
public void onNothingSelected(AdapterView<?> parentView) {
// your code here
}
});
https://stackoverflow.com/questions/64550613
复制相似问题