2012-12-05 31 views
0

我有一个从数据库填充的微调框。因此,如果单击微调框时没有任何项目,将显示一个空列表项目的微调控件。我想避免在微调控件空白时显示微调控件,并显示一个Toast消息。我有逻辑来检查项目的计数并显示吐司消息,但我找不到调用函数的位置。单击微调器并加载微调项目时调用的事件是什么?当一个android微调框为空时显示一个烤面包信息

+0

我添加了一些代码,对我来说它的工作原理完全。 – stealthjong

回答

0

Spinner打算什么的View子类,因此,View.setOnClickListener()可以用来改变onClick()实现点击时将被调用。您可以覆盖onClick()以检查Spinner是否为空,然后显示Toast

更正:

既然你不能setOnClickListenerSpinner,您可以使用该解决方案建议在此question(其中我已经粘贴下面的内容)。

不是设置微调器的OnClickListener,而是设置OnTouchListener和OnKeyListener。

spinner.setOnTouchListener(Spinner_OnTouch); 
spinner.setOnKeyListener(Spinner_OnKey); 

和听众:

private View.OnTouchListener Spinner_OnTouch = new View.OnTouchListener() { 
    public boolean onTouch(View v, MotionEvent event) { 
     if (event.getAction() == MotionEvent.ACTION_UP) { 
      doWhatYouWantHere(); 
     } 
     return true; 
    } 
}; 
private static View.OnKeyListener Spinner_OnKey = new View.OnKeyListener() { 
    public boolean onKey(View v, int keyCode, KeyEvent event) { 
     if (keyCode == KeyEvent.KEYCODE_DPAD_CENTER) { 
      doWhatYouWantHere(); 
      return true; 
     } else { 
      return false; 
     } 
    } 
}; 
+0

呃显示的ror消息是'不要在AdapterView上调用setOnClickListener.You可能想要使用setOnItemClickListener',但这不适合我的目的。 – viks

2

为什么不设置onClickListener

Spinner s = (Spinner)findViewById(R.id.myspinner); 
s.setOnClickListener(new OnClickListener() { 
    public void onClick(View v) { 
     checkForItemCount(); //where you show your Toast if it's empty. 
    } 
}); 

编辑: 我想我不会完全覆盖你的问题,所以我尝试了一些代码自己。这完全适用于你。

final Spinner s = (Spinner)findViewById(R.id.spinner1); // get reference 
    ArrayList<String> mList = new ArrayList<String>(); //some list without items 
    s.setAdapter(new ArrayAdapter<String>(this,android.R.layout.simple_spinner_item, mList)); 
    s.setOnTouchListener(new OnTouchListener() { 
     @Override 
     public boolean onTouch(View v, MotionEvent event) { 
      if (event.getAction() == MotionEvent.ACTION_UP && mList.size() == 0) { 
       toast("Empty"); //lazy method for toasting 
       s.setPressed(false); //closes the spinner. 
      } 
      return true; 
     } 
    }); 
+0

我尝试了这个,但是错误信息显示你不能为微调器设置onclicklistener – viks

+0

尝试使用's.setOnClickListener(new View.OnClickListener(){'而不是 –

+0

这可行,但toast消息显示3-4次.. 。touchlistener在调用setselection时调用? – viks

0

这是当选择一个项目时,如果这就是你要求的功能。如需更多帮助,您需要发布您的代码。否则,我们不知道你有

spinner.setOnItemSelectedListener(new OnItemSelectedListener()

+0

不,我想避免如果计数为0,则显示微调项目。我必须检查用户何时点击文本框,如在微调器位置显示的视图 – viks

相关问题