Android Spinner Выбранный элемент - PullRequest
6 голосов
/ 28 апреля 2011

Я заполняю счетчик из базы данных вот так

    // 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();

я получаю следующее. Есть ли способ получить название города или идентификатор города из базы данных.

enter image description here

Ответы [ 6 ]

8 голосов
/ 29 апреля 2011

Я думаю, поскольку вы используете 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... :)

Надеюсь, это поможет ....

5 голосов
/ 28 апреля 2011

Просто возьмите адаптер с вашего счетчика и получите строку из курсора

Cursor cursor = (Cursor) myAdapter.getItem(position);
String cityName = cursor.getString(cursor.getColumnIndex(DBAdapter.KEY_NAME));
1 голос
/ 08 июля 2011
    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
1 голос
/ 28 апреля 2011
0 голосов
/ 10 января 2015

Надеюсь, это поможет !!

Toast.makeText(getApplicationContext(), "getSelectedItem=" + spinnerString, Toast.LENGTH_SHORT).show();
            Toast.makeText(getApplicationContext(), "getSelectedItemPosition=" + nPos, Toast.LENGTH_SHORT).show();
0 голосов
/ 02 декабря 2013

Способ, которым я достиг этого, был таким:

Вам придется привести метод getItem () к курсору, поскольку он, по сути, просто возвращает курсор, а не отдельную строку в курсоре, которая раздражает.

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

Переместить курсор на первый ряд

cursor.moveToFirst();

Теперь вы можете получить строку из курсора, используя имя столбца, совпадающее с таблицей, изначально запрашиваемой при настройке адаптера спиннеров, который был получен выше с помощью getAdapter ()

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

Надеюсь, это поможет и будет признателен за любые отзывы:)

...