我正在尝试通过匹配名称从我的微调器视图中获取项目文本但是还没有能够执行。这是我使用过的代码:
for(int i=0;i<calendar_spinner.getAdapter().getCount();i++) {
String s= calendar_spinner.getAdapter().getItem(i).toString();
System.out.println("Calendars are"+s);
if(calendar_Name.equals(s))
{
System.out.println("Calendar setted");
calendar_spinner.setSelection(i);
break;
}
}
我得到s的输出为com.android.calendermodel.MyCalendarsModel@405872a0不完全是名字,不同的......
答案 0 :(得分:6)
检查一下:
spinner.setOnItemSelectedListener(new OnItemSelectedListener() {
public void onItemSelected(AdapterView<?> parent, View arg1,
int pos, long arg3) {
String Text = parent.getSelectedItem().toString();
}
}
答案 1 :(得分:5)
我也在寻找一个非常类似问题的解决方案:
对于ArrayAdapter,你可以这样做:
Spinner s = (Spinner) findViewById(R.id.spinner_id);
int i = adapter.getPosition("blue");
s.setSelection(i);
对于自定义适配器,您可以执行以下操作:
Spinner s = (Spinner) findViewById(R.id.spinner_id);
for(i=0; i < adapter.getCount(); i++) {
if("blue".equals(adapter.getItem(i).toString())){
s.setSelection(i);
break;
}
}
从以下地址获取此信息: http://www.dcpagesapps.com/developer-resources/android/23-android-spinner-tips?start=1
答案 2 :(得分:2)
这不是一个正确的方法。您应该使用Spinner的 setOnItemSelectedListener 。如果您坚持按照自己的方式进行操作,则可以覆盖对象的 toString 方法,只返回所需的文本。
答案 3 :(得分:1)
在声明适配器时,您可以覆盖getItem方法以仅返回字符串。通过以下方式:
ArrayAdapter<String> adapter= new ArrayAdapter<String>(this, android.R.layout.simple_spinner_item_1, arr)
{
public Object getItem(int position)
{
return arr[position];
}
};
答案 4 :(得分:0)
所以你试图得到微调器的选择名称?这很简单,你不需要调用它的适配器,它只是:
String itemName = mySpinner.getSelectedItem().toString()
如果您只想在更改微调器选项时执行操作(例如过滤日历),则可以为您的微调器实现OnItemSelected
侦听器。