Получить spinner выбранные элементы текста?
Как получить текст выбранного элемента spinner?
Я должен получить текст на элемент, выбранный в моем прядильщика, когда я нажимаю на кнопку Сохранить. мне нужен текст, а не Индекс.
12 ответов:
Spinner spinner = (Spinner)findViewById(R.id.spinner); String text = spinner.getSelectedItem().toString();
TextView textView = (TextView)mySpinner.getSelectedView(); String result = textView.getText().toString();
вы должны использовать индекс и адаптер, чтобы выяснить текст
посмотреть этот пример Spinner
public class MyOnItemSelectedListener implements OnItemSelectedListener { public void onItemSelected(AdapterView<?> parent, View view, int pos, long id) { Toast.makeText(parent.getContext()), "The planet is " + parent.getItemAtPosition(pos).toString(), Toast.LENGTH_LONG).show(); } public void onNothingSelected(AdapterView parent) { // Do nothing. } }
использовать
import java.util.ArrayList; import android.app.Activity; import android.content.Intent; import android.os.Bundle; import android.text.Editable; import android.view.View; import android.view.View.OnClickListener; import android.widget.AdapterView; import android.widget.AdapterView.OnItemSelectedListener; import android.widget.ArrayAdapter; import android.widget.Button; import android.widget.EditText; import android.widget.Spinner; import android.widget.Toast; public class dynamic_spinner_main extends Activity { private Spinner m_myDynamicSpinner; private EditText m_addItemText; private ArrayAdapter<CharSequence> m_adapterForSpinner; /** Called when the activity is first created. */ @Override public void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.main_spinner); /////////////////////////////////////////////////////////////// //grab our UI elements so we can manipulate them (in the case of the Spinner) // or add listeners to them (in the case of the buttons) m_myDynamicSpinner = (Spinner)findViewById(R.id.dynamicSpinner); m_addItemText = (EditText)findViewById(R.id.newSpinnerItemText); Button addButton = (Button)findViewById(R.id.AddBtn); Button clearButton = (Button)findViewById(R.id.ClearBtn); //////////////////////////////////////////////////////////////// //create an arrayAdapter an assign it to the spinner m_adapterForSpinner = new ArrayAdapter(this, android.R.layout.simple_spinner_item); m_adapterForSpinner.setDropDownViewResource(android.R.layout.simple_spinner_dropdown_item); m_myDynamicSpinner.setAdapter(m_adapterForSpinner); m_adapterForSpinner.add("gr"); m_myDynamicSpinner.setOnItemSelectedListener(new OnItemSelectedListener() { @Override public void onItemSelected(AdapterView<?> parentView, View selectedItemView, int position, long id) { // your code here Intent mIntent=new Intent(dynamic_spinner_main.this,sampleLocalization.class); mIntent.putExtra("lang", m_myDynamicSpinner.getItemIdAtPosition(position)); System.out.println("Spinner value...."+m_myDynamicSpinner.getSelectedItem().toString()); startActivity(mIntent); } @Override public void onNothingSelected(AdapterView<?> parentView) { // your code here } }); //////////////////////////////////////////////////////////////// //add listener for addButton addButton.setOnClickListener(new OnClickListener(){ @Override public void onClick(View v) { addNewSpinnerItem(); } }); //////////////////////////////////////////////////////////////// //add listener for addButton clearButton.setOnClickListener(new OnClickListener(){ @Override public void onClick(View v) { clearSpinnerItems(); } }); } private void addNewSpinnerItem() { CharSequence textHolder = "" + m_addItemText.getText(); m_adapterForSpinner.add(textHolder); } private void clearSpinnerItems() { m_adapterForSpinner.clear(); m_adapterForSpinner.add("dummy item"); } }
main_spinner.xml
<?xml version="1.0" encoding="utf-8"?> <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" android:orientation="vertical" android:layout_width="fill_parent" android:layout_height="fill_parent"> <EditText android:layout_height="wrap_content" android:layout_margin="4px" android:id="@+id/newSpinnerItemText" android:layout_width="fill_parent"></EditText> <Button android:layout_height="wrap_content" android:id="@+id/AddBtn" android:layout_margin="4px" android:layout_width="fill_parent" android:text="Add To Spinner"></Button> <Button android:layout_height="wrap_content" android:id="@+id/ClearBtn" android:layout_margin="4px" android:layout_width="fill_parent" android:text="Clear Spinner Items"></Button> <Spinner android:layout_height="wrap_content" android:id="@+id/dynamicSpinner" android:layout_margin="4px" android:layout_width="fill_parent"></Spinner> </LinearLayout>
Spinner возвращает целочисленное значение для массива. Вы должны получить строковое значение на основе индекса.
Spinner MySpinner = (Spinner)findViewById(R.id.spinner); Integer indexValue = MySpinner.getSelectedItemPosition();
одна строчка версию:
String text = ((Spinner)findViewById(R.id.spinner)).getSelectedItem().toString();
обновление: Вы можете удалить приведение, если используете SDK 26 (или более новую версию) для компиляции проекта.
String text = findViewById(R.id.spinner).getSelectedItem().toString();
spinner_button.setOnItemSelectedListener(new OnItemSelectedListener() { @Override public void onItemSelected(AdapterView<?>arg0, View view, int arg2, long arg3) { String selected_val=spinner_button.getSelectedItem().toString(); Toast.makeText(getApplicationContext(), selected_val , Toast.LENGTH_SHORT).show(); } @Override public void onNothingSelected(AdapterView<?> arg0) { // TODO Auto-generated method stub } }); }
TextView textView = (TextView) spinActSubTask.getSelectedView().findViewById(R.id.tvProduct); String subItem = textView.getText().toString();
для блесен на основе CursorAdapter:
- получить идентификатор выбранного элемента:
spinner.getSelectedItemId()
получить имя элемента из базы данных, например:
public String getCountryName(int pId){ Cursor cur = mDb.query(TABLE, new String[]{COL_NAME}, COL_ID+"=?", new String[]{pId+""}, null, null, null); String ret = null; if(cur.moveToFirst()){ ret = cur.getString(0); } cur.close(); return ret; }
для тех у HashMap на основе spinner:
((HashMap)((Spinner)findViewById(R.id.YourSpinnerId)).getSelectedItem()).values().toArray()[0].toString();
Если вы находитесь во фрагменте, адаптере или классе , отличном от основных действий, используйте это:
((HashMap)((Spinner)YourInflatedLayoutOrView.findViewById(R.id.YourSpinnerId)).getSelectedItem()).values().toArray()[0].toString();
Это просто для руководства; вы должны найти свой посмотреть код перед методом onClick.
после установки spinner адаптер этот код поможет
spinner.setOnItemSelectedListener(new AdapterView.OnItemSelectedListener() { @Override public void onItemSelected(AdapterView<?> adapterView, View view, int i, long l) { Toast.makeText(getApplicationContext(), "This is " + adapterView.getItemAtPosition(i).toString(), Toast.LENGTH_LONG).show(); try { //Your task here }catch (Exception e) { e.printStackTrace(); } } @Override public void onNothingSelected(AdapterView<?> adapterView) { } });