【问题标题】:Android Spinner Selected ItemAndroid Spinner 选定项目
【发布时间】:2011-08-14 16:49:03
【问题描述】:

我正在像这样从数据库中填充微调器

    // Populating the City Spinner
    Cursor cities = db.cityList();
    startManagingCursor(cities);

    // create an array to specify which fields we want to display
    String[] from = new String[] { DBAdapter.KEY_NAME };
    // create an array of the display item we want to bind our data to
    int[] to = new int[] { android.R.id.text1 };

    Spinner cityList = (Spinner) this.findViewById(R.id.citySpiner);
    SimpleCursorAdapter adapter = new SimpleCursorAdapter(this, android.R.layout.simple_spinner_item, cities, from, to);
    adapter.setDropDownViewResource(android.R.layout.simple_spinner_dropdown_item);
    cityList.setAdapter(adapter);

当我尝试像这样从微调器的选定项目中获取内容时

// Get the City
                Spinner getCity = (Spinner) findViewById(R.id.citySpiner);
                String cityName = getCity.getSelectedItem().toString();

我得到以下信息。 有没有办法从数据库中获取城市名称或城市 ID。

【问题讨论】:

    标签: android spinner android-cursor


    【解决方案1】:

    我认为,当您使用 customadapter 并在适配器中提供三个列表时...

    你不能简单地通过调用 getSelectedItem().. 来获取选定的文本。

    使用这个:

    Spinner mySpinner = (Spinner)findViewbyId(R.id.spinner);
    int position = mySpinner.getSelectedItemPosition();
    String Text = yourCityList[position].toString(); // dont know which list is holding the city list... 
    // i didn't use any db in any of my app so cant tell you how can you get list... 
    // leaving it to you... :)
    

    希望对你有帮助……

    【讨论】:

      【解决方案2】:

      只需从微调器中获取适配器并从光标中获取字符串

      Cursor cursor = (Cursor) myAdapter.getItem(position);
      String cityName = cursor.getString(cursor.getColumnIndex(DBAdapter.KEY_NAME));
      

      【讨论】:

      • 有没有办法像在 HTML 中一样在选项选择选项中拥有名称和键值。
      • 键值到底是什么意思
      • 这样。显示文本是汽车名称,但值是 ids
      • 这很好用,谢谢!我只是在寻找一种方法来获取光标加载的微调器的选定值作为字符串,而不必在微调器上做一个侦听器。像魅力一样工作!
      【解决方案3】:
          List<String> list = new ArrayList<String>();
          s = (Spinner)findViewById(R.id.spinner1);
          SQLiteDatabase sqldb = db.openDataBase();
          Cursor cr = sqldb.rawQuery("select Name from employee",null);
          if (cr.moveToFirst()) {
              do {
              list.add(cr.getString(0).toString());
              Toast.makeText(this,cr.getString(0).toString(),Toast.LENGTH_LONG).show();
              ArrayAdapter <String> a= new ArrayAdapter(this, android.R.layout.simple_spinner_item,list);
               a.setDropDownViewResource(android.R.layout.simple_spinner_dropdown_item);
                s.setAdapter(a);
              } while (cr.moveToNext());
      
            }//urvesh patel
      

      【讨论】:

        【解决方案4】:

        我实现它的方式是这样的:

        您必须将 getItem() 方法转换为游标,因为它本质上只是返回一个游标而不是游标中的单个行,这很烦人。

        final Cursor cursor = (Cursor) yourSpinner.getAdapter().getItem( position );
        

        将光标移动到第一行

        cursor.moveToFirst();
        

        现在您可以使用与设置旋转器适配器时最初查询的表匹配的列名从光标中获取字符串,该适配器在上面使用 getAdapter() 获取

        final String selectedPartUUID = cursor.getString( cursor.getColumnIndex( TABLE_COLUMN_NAME ) );
        

        希望这会有所帮助,并希望得到任何反馈 :)

        【讨论】:

          【解决方案5】:

          希望这会有所帮助!

          Toast.makeText(getApplicationContext(), "getSelectedItem=" + spinnerString, Toast.LENGTH_SHORT).show();
                      Toast.makeText(getApplicationContext(), "getSelectedItemPosition=" + nPos, Toast.LENGTH_SHORT).show();
          

          【讨论】:

            猜你喜欢
            • 1970-01-01
            • 1970-01-01
            • 2015-04-03
            • 1970-01-01
            • 1970-01-01
            • 2014-05-05
            • 1970-01-01
            • 1970-01-01
            • 1970-01-01
            相关资源
            最近更新 更多