0

我正在尝试通过匹配名称但无法从我的微调器视图中获取项目文本。这是我使用的代码:

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 不完全是名字,有些不同......

4

5 回答 5

6

检查这个:

spinner.setOnItemSelectedListener(new OnItemSelectedListener() {

        public void onItemSelected(AdapterView<?> parent, View arg1,
                int pos, long arg3) {
            String Text = parent.getSelectedItem().toString();
              }
          }
于 2012-07-25T06:32:09.420 回答
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

于 2012-11-24T17:32:47.680 回答
2

这不是正确的做法。您应该使用Spinner 的setOnItemSelectedListener。如果您坚持按照自己的方式进行操作,您可以覆盖对象的toString方法,只返回您想要的文本。

于 2012-07-25T06:34:58.013 回答
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];
     }
};
于 2012-07-25T06:33:48.233 回答
0

因此,您正在尝试获取微调器选择名称?这很简单,你不需要调用它的适配器,它只是:

String itemName = mySpinner.getSelectedItem().toString()

如果您只想在微调器选项更改时执行操作(例如过滤日历),您可以OnItemSelected为微调器实现侦听器。

于 2012-07-25T06:35:34.250 回答