1page.title=AdapterView 2parent.title=User Interface 3parent.link=index.html 4@jd:body 5 6<div id="qv-wrapper"> 7<div id="qv"> 8 <h2>In this document</h2> 9 <ol> 10 <li><a href="#FillingTheLayout">Filling the Layout with Data</a></li> 11 <li><a href="#HandlingUserSelections">Handling User Selections</a></li> 12 </ol> 13</div> 14</div> 15 16 17 18<pre> 19// Get a Spinner and bind it to an ArrayAdapter that 20// references a String array. 21Spinner s1 = (Spinner) findViewById(R.id.spinner1); 22ArrayAdapter<CharSequence> adapter = ArrayAdapter.createFromResource( 23 this, R.array.colors, android.R.layout.simple_spinner_item); 24adapter.setDropDownViewResource(android.R.layout.simple_spinner_dropdown_item); 25s1.setAdapter(adapter); 26 27// Load a Spinner and bind it to a data query. 28private static String[] PROJECTION = new String[] { 29 People._ID, People.NAME 30 }; 31 32Spinner s2 = (Spinner) findViewById(R.id.spinner2); 33Cursor cur = managedQuery(People.CONTENT_URI, PROJECTION, null, null); 34 35SimpleCursorAdapter adapter2 = new SimpleCursorAdapter(this, 36 android.R.layout.simple_spinner_item, // Use a template 37 // that displays a 38 // text view 39 cur, // Give the cursor to the list adapter 40 new String[] {People.NAME}, // Map the NAME column in the 41 // people database to... 42 new int[] {android.R.id.text1}); // The "text1" view defined in 43 // the XML template 44 45adapter2.setDropDownViewResource(android.R.layout.simple_spinner_dropdown_item); 46s2.setAdapter(adapter2); 47</pre> 48 49<p>Note that it is necessary to have the People._ID column in projection used with CursorAdapter 50or else you will get an exception.</p> 51 52<p>If, during the course of your application's life, you change the underlying data that is read by your Adapter, 53you should call {@link android.widget.ArrayAdapter#notifyDataSetChanged()}. This will notify the attached View 54that the data has been changed and it should refresh itself.</p> 55 56<h2 id="HandlingUserSelections">Handling User Selections</h2> 57<p>You handle the user's selection by setting the class's {@link 58android.widget.AdapterView.OnItemClickListener} member to a listener and 59catching the selection changes. </p> 60<pre> 61// Create a message handling object as an anonymous class. 62private OnItemClickListener mMessageClickedHandler = new OnItemClickListener() { 63 public void onItemClick(AdapterView parent, View v, int position, long id) 64 { 65 // Display a messagebox. 66 Toast.makeText(mContext,"You've got an event",Toast.LENGTH_SHORT).show(); 67 } 68}; 69 70// Now hook into our object and set its onItemClickListener member 71// to our class handler object. 72mHistoryView = (ListView)findViewById(R.id.history); 73mHistoryView.setOnItemClickListener(mMessageClickedHandler); 74</pre> 75 76<div class="special"> 77<p>For more discussion on how to create different AdapterViews, read the following guides: 78<a href="{@docRoot}guide/topics/ui/controls/spinner.html">Spinner</a>, 79<a href="{@docRoot}guide/topics/ui/layout/listview.html">List View</a>, and 80<a href="{@docRoot}guide/topics/ui/layout/gridview.html">Grid View</a>. 81</div> 82