多个微调器和onItemSelected

xai*_*ain 37 events android spinner

我有两个触发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;
    }
Run Code Online (Sandbox Code Playgroud)

但只显示第一个日志,因此交换机中没有匹配项.

xan*_*ndy 81

使用:

switch(parent.getId()) {
    ...
}
Run Code Online (Sandbox Code Playgroud)

相反是你需要的.在view您的参数是实际的"行"(即微调项的点击的孩子),和父是实际的"微调",你是后.

  • 不知道是不是因为版本不同,但对我来说是:`adapterView.getId()`。希望这会帮助某人。 (2认同)

Adi*_*til 6

如果您在一个活动中有多个微调器并且您正在使用 onItemSelected 重写方法,请使用以下代码

override fun onItemSelected(parent: AdapterView<*>?, view: View?, position: Int, id: Long) {
         if (parent!!.id == R.id.spinner_1) {
            // first spinner selected
         } else if (parent!!.id == R.id.spinner_2) {
            // second spinner selected
         }
    }
Run Code Online (Sandbox Code Playgroud)

你可以使用 switch case