java - 有没有办法将 setOnClickListener 与 Android Spinner 一起使用?

标签 java android spinner

java.lang.RuntimeException 是“不要为 AdapterView 调用 setOnClickListener。您可能需要 setOnItemClickListener,”但这是不正确的。我正在使用 setOnItemClickListener 来根据新选择做一些事情,但我还需要在用户更改选择之前做一些事情。具体来说,我正在为每个选择收集数据,这些数据在移动到另一个选择之前需要保存到一个文件中,因为另一个选择与不同的数据集相关联。有没有办法将 setOnClickListener 与 Android Spinner 结合使用?

spinner.setOnClickListener(new View.OnClickListener() {
    public void onClick(View v) {
        // Do some stuff before the user changes the selection
        ...

spinner.setOnItemSelectedListener(new OnItemSelectedListener() {
    @Override
    public void onItemSelected(AdapterView<?> parent,
            View view, int pos, long id) {
            // Do some stuff based onItemSelected
            ...

最佳答案

您可以使用 ontouch 事件复制 onclick 事件

    this.spinner=(Spinner)findViewById(R.id.spinner);
    this.spinner.setClickable(false);
    this.spinner.setOnTouchListener(new View.OnTouchListener() {

        @Override
        public boolean onTouch(View v, MotionEvent event) {
            Log.v(TAG, "spinner touch");

            //replicating a click
            if(event.getAction() == MotionEvent.ACTION_UP){
                v.playSoundEffect(android.view.SoundEffectConstants.CLICK);
            }
            return true;
        }
    });

关于java - 有没有办法将 setOnClickListener 与 Android Spinner 一起使用?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3523078/

相关文章:

java - 如何查询 Firebase 文档中的数组列表?

java - 如何避免 Android 应用程序中手机的 IMEI NO 重复?

android - 如何显示带标签的微调器(静态文本)?

java - 为什么在这种情况下它不执行数学运算?

JavaFX为ProgressIndicator和Spinner设置不同的样式

java - 描边线和计算线连接

java - 扫描仪和 JOptionPane 无法正常工作

java - 如何处理 java.time 中的完整周期?

android - 如何修复Android手机相机的帧速率

java - 警告:javax.persistence.spi::未找到有效的提供程序