Android Spinner Selection 自动选择项目

标签 android spinner

我正在运行时更新微调器。当旋转项目出现时,第一个项目会自动选择。我不想要,只需要选择 item Selected 的项目即可。

我已经实现了以下一个解决方案:

        if (checkSelect > 1) {
                    if (camera_device_list_array_data != null) {
                        String url = camera_device_list_array_data.get(position).get(AppHelper.CAMERA_RTSP_URL);
                        String selected_name = camera_device_list_array_data.get(position).get(AppHelper.CAMERA_DEVICE_NAME);
                        GlobalConstants.selected_camera_device_id = Integer.parseInt(camera_device_list_array_data.get(position).get(AppHelper.CAMERA_DEVICE_ID));
                        connected_camera_name_spinner_tv.setText(selected_name);
                        if (mediaPlayer != null) {
                            relaMediaPlay();
                        }
//                        path = url;
                        selected_camera_tv.setText(camera_device_list_array_data.get(position).get(AppHelper.CAMERA_DEVICE_IP_ADDRESS));

                        playVideo();

//                        }

                    }

问题是:

这按要求工作,但第一个项目没有被选择,它在选择第二个项目后选择了第一个项目。

感谢任何帮助。谢谢

最佳答案

Create a custom spinner

import android.content.Context;
import android.util.AttributeSet;
import android.view.View;
import android.widget.AdapterView;
import android.widget.Spinner;

public class CustomSpinner extends Spinner {
    OnItemSelectedListener listener;
    private AdapterView<?> lastParent;
    private View lastView;
    private long lastId;

    public CustomSpinner(Context context, AttributeSet attrs) {
        super(context, attrs);
        // TODO Auto-generated constructor stub
        initlistner();
    }

    @Override
    public void setSelection(int position) {
        if (position == getSelectedItemPosition() && listener != null) {
            listener.onItemSelected(lastParent, lastView, position, lastId);
        } else {
            super.setSelection(position);
        }

    }

    private void initlistner() {
        // TODO Auto-generated method stub
        super.setOnItemSelectedListener(new OnItemSelectedListener() {

            @Override
            public void onItemSelected(AdapterView<?> parent, View view,
                    int position, long id) {
                // TODO Auto-generated method stub
                lastParent = parent;
                lastView = view;
                lastId = id;
                if (listener != null) {
                    listener.onItemSelected(parent, view, position, id);
                }
            }

            @Override
            public void onNothingSelected(AdapterView<?> parent) {
                // TODO Auto-generated method stub
                if (listener != null) {
                    listener.onNothingSelected(parent);
                }
            }
        });

    }

    public void setOnItemSelectedEvenIfUnchangedListener(
            OnItemSelectedListener listener) {
        this.listener = listener;
    }

}

Set Listener

private OnItemSelectedListener listener;

listener = new OnItemSelectedListener() {

        @Override
        public void onItemSelected(AdapterView<?> arg0, View arg1,
                int arg2, long arg3) {}

        @Override
        public void onNothingSelected(AdapterView<?> arg0) {
            // TODO Auto-generated method stub

        }
    };

Pass the listener object to custom listener

cusSpinner.setOnItemSelectedEvenIfUnchangedListener(listener);

关于Android Spinner Selection 自动选择项目,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31152601/

相关文章:

java - Kotlin android studio holder.itemview 问题

javascript - 如何在 Ajax 调用中添加 UI 微调器?

android - 如何知道 Spinner 是否显示或不再显示

android - 如何在android studio中集成google meet

android - 如何使用 XML 和 Java 代码定义自定义小部件

java - 无法解析 : com. github 受影响的模块

css - 在输入数字中隐藏向上和向下箭头按钮(微调器)- Firefox 29

java - 如何使用 Spinner.setAdapter 在 Spinner 中显示字符串数组?

android - 从微调器中删除重复值

php - 表名没有名称列 Android SQLite PHP