2012-12-05 32 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

相關問題