| page.title=AdapterView | |
| parent.title=User Interface | |
| parent.link=index.html | |
| @jd:body | |
| <div id="qv-wrapper"> | |
| <div id="qv"> | |
| <h2>In this document</h2> | |
| <ol> | |
| <li><a href="#FillingTheLayout">Filling the Layout with Data</a></li> | |
| <li><a href="#HandlingUserSelections">Handling User Selections</a></li> | |
| </ol> | |
| </div> | |
| </div> | |
| <pre> | |
| // Get a Spinner and bind it to an ArrayAdapter that | |
| // references a String array. | |
| Spinner s1 = (Spinner) findViewById(R.id.spinner1); | |
| ArrayAdapter<CharSequence> adapter = ArrayAdapter.createFromResource( | |
| this, R.array.colors, android.R.layout.simple_spinner_item); | |
| adapter.setDropDownViewResource(android.R.layout.simple_spinner_dropdown_item); | |
| s1.setAdapter(adapter); | |
| // Load a Spinner and bind it to a data query. | |
| private static String[] PROJECTION = new String[] { | |
| People._ID, People.NAME | |
| }; | |
| Spinner s2 = (Spinner) findViewById(R.id.spinner2); | |
| Cursor cur = managedQuery(People.CONTENT_URI, PROJECTION, null, null); | |
| SimpleCursorAdapter adapter2 = new SimpleCursorAdapter(this, | |
| android.R.layout.simple_spinner_item, // Use a template | |
| // that displays a | |
| // text view | |
| cur, // Give the cursor to the list adapter | |
| new String[] {People.NAME}, // Map the NAME column in the | |
| // people database to... | |
| new int[] {android.R.id.text1}); // The "text1" view defined in | |
| // the XML template | |
| adapter2.setDropDownViewResource(android.R.layout.simple_spinner_dropdown_item); | |
| s2.setAdapter(adapter2); | |
| </pre> | |
| <p>Note that it is necessary to have the People._ID column in projection used with CursorAdapter | |
| or else you will get an exception.</p> | |
| <p>If, during the course of your application's life, you change the underlying data that is read by your Adapter, | |
| you should call {@link android.widget.ArrayAdapter#notifyDataSetChanged()}. This will notify the attached View | |
| that the data has been changed and it should refresh itself.</p> | |
| <h2 id="HandlingUserSelections">Handling User Selections</h2> | |
| <p>You handle the user's selection by setting the class's {@link | |
| android.widget.AdapterView.OnItemClickListener} member to a listener and | |
| catching the selection changes. </p> | |
| <pre> | |
| // Create a message handling object as an anonymous class. | |
| private OnItemClickListener mMessageClickedHandler = new OnItemClickListener() { | |
| public void onItemClick(AdapterView parent, View v, int position, long id) | |
| { | |
| // Display a messagebox. | |
| Toast.makeText(mContext,"You've got an event",Toast.LENGTH_SHORT).show(); | |
| } | |
| }; | |
| // Now hook into our object and set its onItemClickListener member | |
| // to our class handler object. | |
| mHistoryView = (ListView)findViewById(R.id.history); | |
| mHistoryView.setOnItemClickListener(mMessageClickedHandler); | |
| </pre> | |
| <div class="special"> | |
| <p>For more discussion on how to create different AdapterViews, read the following guides: | |
| <a href="{@docRoot}guide/topics/ui/controls/spinner.html">Spinner</a>, | |
| <a href="{@docRoot}guide/topics/ui/layout/listview.html">List View</a>, and | |
| <a href="{@docRoot}guide/topics/ui/layout/gridview.html">Grid View</a>. | |
| </div> |