使用setOnItemSelectedListener

时间:2016-12-28 12:49:50

标签: android position android-spinner

我正在尝试检索微调器的选定位置。微调器内的值是 String 类型,我使用 setOnItemSelectedListener 将类String变量更改为已选择的变量并稍后使用它:

spinner = (MaterialBetterSpinner) myToolbar.findViewById(R.id.spinner);
ArrayAdapter<String> adapter = new ArrayAdapter<String>(this,android.R.layout.simple_dropdown_item_1line,socialMediaOptions);
spinner.setAdapter(adapter);
spinner.setOnItemSelectedListener(new AdapterView.OnItemSelectedListener() {
    @Override
        public void onItemSelected(AdapterView<?> parent, View view, int position, long id) {
           socialMedia =  parent.getItemAtPosition(position).toString();
        }

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

        }
    });

private void sendPost(){
    Log.v(TAG, socialMedia);
}

问题是当选择一个项目时变量不会改变,当微调器选择发生变化时,似乎没有调用 onItemSelected

2 个答案:

答案 0 :(得分:0)

希望您的socialMediaOptions是像这样的字符串数组

socialMediaOptions={"FB","TWIT","IN"} 

然后

//指定选项列表出现时要使用的布局

添加此行

  

adapter.setDropDownViewResource(android.R.layout.simple_spinner_dropdown_item);

spinner.setOnItemSelectedListener(new AdapterView.OnItemSelectedListener() {
  @Override
  public void onItemSelected(AdapterView<?> parent, View view, int position, long id) {

  socialMedia = socialMediaOptions[position];

  }

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

  }
  });

答案 1 :(得分:0)

看到这个帖子: https://github.com/Lesilva/BetterSpinner/issues/42 有人说BetterSpinner扩展了EditText,这就是没有调用onItemSelectedListener的原因。您应该使用TextChangedListener。