1 page.title=AdapterView 2 parent.title=User Interface 3 parent.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. 21 Spinner s1 = (Spinner) findViewById(R.id.spinner1); 22 ArrayAdapter<CharSequence> adapter = ArrayAdapter.createFromResource( 23 this, R.array.colors, android.R.layout.simple_spinner_item); 24 adapter.setDropDownViewResource(android.R.layout.simple_spinner_dropdown_item); 25 s1.setAdapter(adapter); 26 27 // Load a Spinner and bind it to a data query. 28 private static String[] PROJECTION = new String[] { 29 People._ID, People.NAME 30 }; 31 32 Spinner s2 = (Spinner) findViewById(R.id.spinner2); 33 Cursor cur = managedQuery(People.CONTENT_URI, PROJECTION, null, null); 34 35 SimpleCursorAdapter 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 45 adapter2.setDropDownViewResource(android.R.layout.simple_spinner_dropdown_item); 46 s2.setAdapter(adapter2); 47 </pre> 48 49 <p>Note that it is necessary to have the People._ID column in projection used with CursorAdapter 50 or 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, 53 you should call {@link android.widget.ArrayAdapter#notifyDataSetChanged()}. This will notify the attached View 54 that 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 58 android.widget.AdapterView.OnItemClickListener} member to a listener and 59 catching the selection changes. </p> 60 <pre> 61 // Create a message handling object as an anonymous class. 62 private 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. 72 mHistoryView = (ListView)findViewById(R.id.history); 73 mHistoryView.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