如何保持onItemSelected从一个新近实例微调发射了? [英] How to keep onItemSelected from firing off on a newly instantiated Spinner?

查看:189
本文介绍了如何保持onItemSelected从一个新近实例微调发射了?的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

我已经想到了一些不足优雅的解决这个办法,但我知道我一定是失去了一些东西。

我的onItemSelected火灾,立即而不与用户的交互,这是意外的行为。我希望为用户界面,以等待用户选择的东西它才作罢。

我甚至尝试设置在onResume听众,希望会有所帮助,但事实并非如此。

我如何从用户之前发射了可触摸控​​制停止?

 公共类CMSHome延伸活动{

私人微调微调;

@覆盖
    公共无效的onCreate(包savedInstanceState){
    super.onCreate(savedInstanceState);
    的setContentView(R.layout.main);

    //这是我的微调///////////////////////////////////////////
    微调=(微调)findViewById(R.id.spinner);
    ArrayAdapter< CharSequence的>适配器= ArrayAdapter.createFromResource(
            对此,R.array.pm_list,android.R.layout.simple_spinner_item);
    adapter.setDropDownViewResource(android.R.layout.simple_spinner_dropdown_item);
    spinner.setAdapter(适配器);
    };

公共无效onResume(){
    super.onResume();
    spinner.setOnItemSelectedListener(新MyOnItemSelectedListener());
}

    公共类MyOnItemSelectedListener实现OnItemSelectedListener {

    公共无效onItemSelected(适配器视图<>父,
        视图中查看,INT POS,长I​​D){

     意图I =新的意图(CMSHome.this,ListProjects.class);
     i.putExtra(bEmpID,parent.getItemAtPosition(POS)的ToString());
        startActivity(ⅰ);

        Toast.makeText(parent.getContext()的PM是+
          parent.getItemAtPosition(POS)的ToString(),Toast.LENGTH_LONG).show();
    }

    公共无效onNothingSelected(适配器视图父){
      // 没做什么。
    }
}
}
 

解决方案

我本来期望您的解决方案的工作 - 我如果设置建立监听器之前,适配器虽然评选活动将不会触发

话虽这么说,一个简单的布尔标志,将允许您检测流氓第一选择事件,而忽略它。

I've thought of some less than elegant ways to solve this, but I know I must be missing something.

My onItemSelected fires off immediately without any interaction with the user, and this is undesired behavior. I wish for the UI to wait until the user selects something before it does anything.

I even tried setting up the listener in the onResume, hoping that would help, but it doesn't.

How can I stop this from firing off before the user can touch the control?

public class CMSHome extends Activity { 

private Spinner spinner;

@Override
    public void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.main);

    // Heres my spinner ///////////////////////////////////////////
    spinner = (Spinner) findViewById(R.id.spinner);
    ArrayAdapter<CharSequence> adapter = ArrayAdapter.createFromResource(
            this, R.array.pm_list, android.R.layout.simple_spinner_item);
    adapter.setDropDownViewResource(android.R.layout.simple_spinner_dropdown_item);
    spinner.setAdapter(adapter);
    };

public void onResume() {
    super.onResume();
    spinner.setOnItemSelectedListener(new MyOnItemSelectedListener());
}

    public class MyOnItemSelectedListener implements OnItemSelectedListener {

    public void onItemSelected(AdapterView<?> parent,
        View view, int pos, long id) {

     Intent i = new Intent(CMSHome.this, ListProjects.class);
     i.putExtra("bEmpID", parent.getItemAtPosition(pos).toString());
        startActivity(i);

        Toast.makeText(parent.getContext(), "The pm is " +
          parent.getItemAtPosition(pos).toString(), Toast.LENGTH_LONG).show();
    }

    public void onNothingSelected(AdapterView parent) {
      // Do nothing.
    }
}
}

解决方案

I would have expected your solution to work -- I though the selection event would not fire if you set the adapter before setting up the listener.

That being said, a simple boolean flag would allow you to detect the rogue first selection event and ignore it.

这篇关于如何保持onItemSelected从一个新近实例微调发射了?的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆