获取微调select项目文本?
如何获得微调select项目的文本?
当我点击保存button时,我必须得到在我的微调select的项目上的文字。 我需要的文字不是索引。
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>
微调器返回数组的整数值。 您必须根据索引检索string值。
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();
TextView textView = (TextView) spinActSubTask.getSelectedView().findViewById(R.id.tvProduct); String subItem = textView.getText().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 } }); }
对于基于CursorAdapter的spinners:
- 获取选定的项目id:
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的微调:
((HashMap)((Spinner)findViewById(R.id.YourSpinnerId)).getSelectedItem()).values().toArray()[0].toString();
如果你在一个片段,一个适配器或一个除主要活动之外的类,使用这个:
((HashMap)((Spinner)YourInflatedLayoutOrView.findViewById(R.id.YourSpinnerId)).getSelectedItem()).values().toArray()[0].toString();
这只是为了指导; 你应该在onClick方法之前find你的视图的id 。
Spinner spinner = (Spinner) findViewById(R.id.yourspinnerid); String text = spinner.getSelectedItem().toString();