2012-03-04 49 views
0

我有一個從BaseAdapter擴展的適配器。我正在使用Spinner。我不能當從它選擇的項目能夠激發onItemSelectedListener:無法讓onItemSelectedListener使用微調器觸發?

public class MyAdapter extends BaseAdapter { 
    .. 
} 

public void foo() { 
    MyAdapter adapter = new MyAdapter(...); 
    adapter.setStuff(new String[] { "foo0", "foo1", "fooN" }); 

    Spinner spinner = (Spinner)findViewById(R.id.foo); 
    spinner.setOnItemSelectedListener(new OnItemSelectedListener() { 
     @Override 
     public void onItemSelected(AdapterView<?> adapterView, View view, int position, long id) { 
      Log.e("####", "hello?..."); 
     } 

     @Override 
     public void onNothingSelected(AdapterView<?> adapterView) { 
      Log.e("####", "hello?..."); 
     } 
    }); 
    spinner.setAdapter(adapter); 
} 

微調器運行良好,否則,我就當我選擇一個項目沒有收到任何回調。回調函數是否僅適用於ArrayAdapter派生的適配器?

感謝

+0

嘗試在setAdapter()之前調用'setOnItemSelectedListener()'。 – CommonsWare 2012-03-04 15:26:43

+0

嗨,好吧,試過但仍然沒有。哎呀。 – user291701 2012-03-04 15:29:44

+0

'setOnItemSelectedListener(new AdapterView.OnItemSelectedListener(){'也許你有一個不同的'import'而不是'AdapterView' – 2012-03-04 15:33:43

回答

1

沒有看到你的適配器的實施,我只能猜測,你在你的適配器的實施某處犯了一個錯誤。我沒有看到你的任何方法的實現。想必你實現了他們,否則你的代碼不會編譯,但如果你沒有提供足夠的結構,那麼你會錯過你需要的東西。

我很好奇爲什麼你不只是使用ArrayAdapter來支持微調。