note 30- Spinner
A. default spinner :
1. must set a string-array in the string.xml
2. use function : ArrayAdpater. createFromResource(Context context, int strArrayId, int spinnerNotExtantLayout);
The itemLayout must be the android.R.simple_spinner_item ;
4. adapter.setDropDownViewResource(int everyItemLayout) ;
The everyItemLayout must be the android.R.simple_spinner_dropdown _item;
5. set the OnItemSelectedListener;
B. custom spinner
1. create an ArrayList . The list item can be ANY OBJECT , just override the toString function.
2. new an ArrayAdapter(Context context , int everyItemView, int everyItemTextId, list dataList);
the custom view MUST BE WITH A TextView
3. set the OnItemSelectedListener;
<?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" > <TextView android:layout_width="fill_parent" android:layout_height="wrap_content" android:text="Hello World, SpinnerTest" /> <Spinner android:id="@+id/spinner" android:layout_width="fill_parent" android:layout_height="wrap_content" /> </LinearLayout>
<?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" > <TextView android:id="@+id/textViewId" android:layout_width="fill_parent" android:layout_height="wrap_content" /> </LinearLayout>
<?xml version="1.0" encoding="utf-8"?> <resources> <string name="app_name">SpinnerTest</string> <string-array name="planet_array"> <item>Mercury</item> <item>Venus</item> <item>Earth</item> <item>Mars</item> <item>Jupiter</item> <item>Saturn</item> <item>Uranus</item> <item>Neptune</item> </string-array> </resources>
package com.spinner_test; import android.app.Activity; import android.os.Bundle; import android.util.Log; import android.view.View; import android.widget.AdapterView; import android.widget.AdapterView.OnItemSelectedListener; import android.widget.ArrayAdapter; import android.widget.Spinner; import java.util.ArrayList; import java.util.List; public class SpinnerTest extends Activity { Spinner spinner; /** Called when the activity is first created. */ @Override public void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.main); spinner=(Spinner)this.findViewById(R.id.spinner); //default create // ArrayAdapter<CharSequence> adapter =ArrayAdapter.createFromResource( // this, // R.array.planet_array, // android.R.layout.simple_spinner_item); // adapter.setDropDownViewResource(android.R.layout.simple_spinner_dropdown_item); //dynamic create List<String> list=new ArrayList<String>(); list.add("test1"); list.add("test2"); //Context context //int everyItemView //int everyItemTextId //list dataList //list can contain any Object, just rewrite the toString; ArrayAdapter adapter=new ArrayAdapter( this, R.layout.item, R.id.textViewId, list); spinner.setAdapter(adapter); spinner.setPrompt("solar system"); spinner.setOnItemSelectedListener(spinnerSelectListener); } OnItemSelectedListener spinnerSelectListener=new OnItemSelectedListener(){ public void onItemSelected(AdapterView<?> adapterView, View view, int position, long id) { // throw new UnsupportedOperationException("Not supported yet."); String selected=adapterView.getItemAtPosition(position).toString(); Log.i("l","selected:"+selected); } public void onNothingSelected(AdapterView<?> adapterView) { // throw new UnsupportedOperationException("Not supported yet."); Log.i("l","nothing selected"); } }; }