2015-04-22 35 views
0

作爲here問題的延續,我發現spinner的偵聽程序從未執行(或)觸發,我無法解決問題。Spinner聽衆未在Android中執行

這裏是與所說的紡絲器和聽者的代碼的一部分:

Spinner priority = (Spinner)findViewById(R.id.priority); 

priority.setOnItemSelectedListener(new AdapterView.OnItemSelectedListener() { 
    @Override 
    public void onItemSelected(AdapterView<?> parent, View view, int position, long id) { 
     Log.d("listener","it works"); 
     Log.d("value",""+parent.getSelectedItem().toString().equalsIgnoreCase("Low")); 
     /*if(parent.getSelectedItem().toString().equalsIgnoreCase("Low")) 
      imageId = R.drawable.blue; 
     else if(parent.getSelectedItem().toString().equalsIgnoreCase("Medium")) 
      imageId = R.drawable.green; 
     else 
      imageId = R.drawable.red;*/ 
    } 

    @Override 
    public void onNothingSelected(AdapterView<?> parent) { 

    } 
}); 

在日誌中,聽者不會打印在所有的值。

+0

難道ü添加任何項目成微調? –

+0

該列表是否與適配器一起顯示?顯示其代碼。 – Harry

回答

0

修改後的代碼。

Spinner priority = (Spinner)findViewById(R.id.priority); 

priority.setOnItemSelectedListener(new AdapterView.OnItemSelectedListener() { 
    @Override 
    public void onItemSelected(AdapterView<?> parent, View view, int position, long id) { 
    Log.d("listener","it works");  
    //Instead of doing parent.getSelectedItem(), get the adapter from parent and from that adapter get item at position as below. 
    Log.d("value",""+parent.getAdapter().getItem(position).toString().equalsIgnoreCase("Low")); 
    } 

    @Override 
    public void onNothingSelected(AdapterView<?> parent) { 

    } 
}); 

如果你的數據是字符串,則它會工作否則你逝去的任何自定義對象,那麼你需要從這個parent.getAdapter().getItem(position)投結果到自定義對象類。

+0

我在logcat中得到這條消息(不是一個錯誤)'試圖完成一個輸入事件,但輸入事件接收器已經被處理掉了.'當我試圖將它保存到數據庫 –

+0

它可能是別的東西,PL添加你的問題n添加完整的堆棧跟蹤 –

0

終於找到了解決辦法:

String priortyStr = priority.getSelectedItem().toString(); 
int imageId = 0; 
if(priortyStr.equals("Low")) 
    imageId = R.drawable.blue; 
else if(priortyStr.equals("Medium")) 
    imageId = R.drawable.green; 
else 
    imageId = R.drawable.red;