2011-02-25 57 views
32

我有两个spinners触发onItemSelected事件。问题是我怎么知道哪一个触发了这样的事件?到目前为止,我尝试过:多个spinners和onItemSelected

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

    Log.d("form","onitemselected"); 
    switch (view.getId()) { 
    case R.id.region_spinner: 
     Region r = (Region)sregions.getSelectedItem(); 
     Log.d("form","regionid:" + r.id); 
     break; 
    case R.id.state_spinner: 
     Log.d("form","state id:"); 
     break; 
    } 

但只显示第一个日志,所以没有匹配的交换机。

回答

68

使用:

switch(parent.getId()) { 
    ... 
} 

反而是你所需要的。 您参数中的view是实际的“行”(即单击的微调项目的子项),父项是您正在使用的实际“微调项目”。

+0

能否请您详细说明一下例子? – AbdulSaleem 2017-12-08 07:21:04

+0

不知道是不是因为不同的版本,但对我来说,它是:'adapterView.getId()'。希望这会帮助某人。 – 2018-03-02 13:49:10

2

Spinner是AdapterView的子类。传递给方法的父对象是选择项目的微调器。