android - 忽略创建时触发的 OnItemSelectedListener

标签 android android-spinner onitemclicklistener

我正在创建一个 spinner 并向其添加了一个 OnItemSelectedListener。 但是我注意到它在创建时触发。 现在我想知道是否有办法忽略/丢弃它。

我知道我可以使用 boolean 值,但这有点“脏”。

最佳答案

这是我的解决方案。

我需要忽略第一个项目选择事件,因为 Route Grade Spinner 和 Route Checkbox 之间存在依赖关系。

我的所有控件都是根据之前对 Activity 的访问设置的。

// Used to count the number of times the onItemSelected gets fired
private int mGradeSelectionCount = 0;

private void attachHandlers() {
    OnItemSelectedListener gradeRangeSelectionMadeListener;
    gradeRangeSelectionMadeListener = new OnItemSelectedListener() {
        @Override
        public void onItemSelected(AdapterView<?> adapter, View view, int position, long id) {
            // If the counter is 0 then we can assume that it is android firing the event
            if (mGradeSelectionCount++ < 1) {
                return;
            }
            if (mCmbGradeFrom.getSelectedItemPosition() == 0) {
                // Uncheck the Route checkbox
                mChkTypeRoute.setChecked(false);
            } else {
                // Check the Route checkbox
                mChkTypeRoute.setChecked(true);
            }
        }
        @Override
        public void onNothingSelected(AdapterView<?> arg0) {
            // Dont care, keep the same values as before

        }
    };
    mCmbGradeFrom.setOnItemSelectedListener(gradeRangeSelectionMadeListener);
    mChkTypeRoute.setOnCheckedChangeListener(new OnCheckedChangeListener() {
        @Override
        public void onCheckedChanged(CompoundButton buttonView, boolean isChecked) {
            if (!isChecked) {
                mCmbGradeFrom.setSelection(0);
                mCmbGradeTo.setSelection(0);
            }
        }
    });
}

关于android - 忽略创建时触发的 OnItemSelectedListener,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2373948/

相关文章:

android - SearchView 将结果从数据库显示到 ListView

android - 如何调用 setOnItemClickListener()

android - 避免在 setAdapter 之后自动调用 Spinner 的 onItemSelected

android - 点击 Spinner 时如何不丢失文本选择?

android - 如何在Itemclicklistener上创建listview

android - 需要获取 id 而不是 position

android - zip4j:从加密文件中获取流是否会创建一个临时的未加密暂存区?

android - 写入 context.getFilesDir() 时为 "Permission denied"

使用 Phonegap 全局数组的 Javascript 不起作用

Android - 当我们选择复选框时,Spinner 需要改变