我正在尝试检索微调器的选定位置。微调器内的值是 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
答案 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。