Home | History | Annotate | Download | only in ui
      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