AdapterView

Try the Compose way
Jetpack Compose is the recommended UI toolkit for Android. Learn how to work with layouts in Compose.

AdapterView is a ViewGroup that displays items loaded into an adapter. The most common type of adapter comes from an array-based data source.

This guide shows how to complete several key steps related to setting up an adapter.

Fill the layout with data

To add data into the layout that you create in your app's UI, add code similar to the following:

Kotlin

valPROJECTION=arrayOf(Contacts.People._ID,People.NAME)
...
// Get a Spinner and bind it to an ArrayAdapter that
// references a String array.
valspinner1:Spinner=findViewById(R.id.spinner1)
valadapter1=ArrayAdapter.createFromResource(
this,R.array.colors,android.R.layout.simple_spinner_item)
adapter1.setDropDownViewResource(android.R.layout.simple_spinner_dropdown_item)
spinner1.adapter=adapter1
// Load a Spinner and bind it to a data query.
valspinner2:Spinner=findViewById(R.id.spinner2)
valcursor:Cursor=managedQuery(People.CONTENT_URI,PROJECTION,null,null,null)
valadapter2=SimpleCursorAdapter(this,
// Use a template that displays a text view
android.R.layout.simple_spinner_item,
// Give the cursor to the list adapter
cursor,
// Map the NAME column in the people database to...
arrayOf(People.NAME),
// The "text1" view defined in the XML template
intArrayOf(android.R.id.text1))
adapter2.setDropDownViewResource(android.R.layout.simple_spinner_dropdown_item)
spinner2.adapter=adapter2

Java

// Get a Spinner and bind it to an ArrayAdapter that
// references a String array.
Spinners1=(Spinner)findViewById(R.id.spinner1);
ArrayAdapteradapter=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.
privatestaticString[]PROJECTION=newString[]{
People._ID,People.NAME
};
Spinners2=(Spinner)findViewById(R.id.spinner2);
Cursorcur=managedQuery(People.CONTENT_URI,PROJECTION,null,null);
SimpleCursorAdapteradapter2=newSimpleCursorAdapter(this,
android.R.layout.simple_spinner_item,// Use a template
// that displays a
// text view
cur,// Give the cursor to the list adapter
newString[]{People.NAME},// Map the NAME column in the
// people database to...
newint[]{android.R.id.text1});// The "text1" view defined in
// the XML template
adapter2.setDropDownViewResource(android.R.layout.simple_spinner_dropdown_item);
s2.setAdapter(adapter2);

Note that it is necessary to have the People._ID column in projection used with CursorAdapter or else you will get an exception.

If, during the course of your application's life, you change the underlying data that is read by your Adapter, you should call notifyDataSetChanged() . This will notify the attached View that the data has been changed and it should refresh itself.

Note: With Android Studio 3.6 and higher, the view binding feature can replace findViewById() calls and provides compile-time type safety for code that interacts with views. Consider using view binding instead of findViewById().

Handle user selections

You handle the user's selection by setting the class's AdapterView.OnItemClickListener member to a listener and catching the selection changes.

Kotlin

valhistoryView:ListView=findViewById(R.id.history)
historyView.onItemClickListener=AdapterView.OnItemClickListener{parent,view,position,id->
Toast.makeText(context,"You've got an event",Toast.LENGTH_SHORT).show()
}

Java

// Create a message handling object as an anonymous class.
privateOnItemClickListenermessageClickedHandler=newOnItemClickListener(){
publicvoidonItemClick(AdapterViewparent,Viewv,intposition,longid)
{
// Display a messagebox.
Toast.makeText(context,"You've got an event",Toast.LENGTH_SHORT).show();
}
};
// Now hook into our object and set its onItemClickListener member
// to our class handler object.
historyView=(ListView)findViewById(R.id.history);
historyView.setOnItemClickListener(messageClickedHandler);

For more discussion see the Spinner topic.

Content and code samples on this page are subject to the licenses described in the Content License. Java and OpenJDK are trademarks or registered trademarks of Oracle and/or its affiliates.

Last updated 2026年05月28日 UTC.