Android Tutorial

Software Setup and Configuration

Android Studio

File Structure

Components

Core Topics

Layout

View

Button

Intent and Intent Filters

Toast

RecyclerView

Fragments

Adapters

Other UI Component

Image Loading Libraries

Date and Time

Material Design

Bars

Working with Google Maps

Chart

Animation

Database

Advance Android

Jetpack

Architecture

App Publish

App Monetization

ArrayAdapter in Android with Example

ArrayAdapter is a type of adapter in Android that can be used with views like ListView, GridView, or Spinner to display an array of objects. It creates a view for each object in the array, and you can control how each item is displayed by overriding the getView() method or by providing a custom layout.

Simple ArrayAdapter:

  • XML Layout (res/layout/activity_main.xml):

Here's a simple ListView:

<ListView xmlns:android="http://schemas.android.com/apk/res/android"
    android:id="@+id/listView"
    android:layout_width="match_parent"
    android:layout_height="match_parent"/>
  • Kotlin Code:

Let's populate this ListView with an array of strings:

class MainActivity : AppCompatActivity() {

    override fun onCreate(savedInstanceState: Bundle?) {
        super.onCreate(savedInstanceState)
        setContentView(R.layout.activity_main)

        val items = arrayOf("Apple", "Banana", "Cherry", "Date", "Fig")

        val adapter = ArrayAdapter<String>(this, android.R.layout.simple_list_item_1, items)
        val listView: ListView = findViewById(R.id.listView)
        listView.adapter = adapter
    }
}

In the above code, the ArrayAdapter is using a default layout (simple_list_item_1) provided by Android.

ArrayAdapter with Custom Layout:

If you want to display a more complex item layout, you can create a custom layout and override the getView() method.

  • Custom Item Layout (res/layout/list_item.xml):
<TextView xmlns:android="http://schemas.android.com/apk/res/android"
    android:id="@+id/textItem"
    android:layout_width="match_parent"
    android:layout_height="wrap_content"
    android:padding="16dp"
    android:textSize="18sp"/>
  • Custom ArrayAdapter:
class CustomArrayAdapter(context: Context, private val resource: Int, private val items: Array<String>)
    : ArrayAdapter<String>(context, resource, items) {

    override fun getView(position: Int, convertView: View?, parent: ViewGroup): View {
        val view: View = convertView ?: LayoutInflater.from(context).inflate(resource, parent, false)
        
        val textItem: TextView = view.findViewById(R.id.textItem)
        textItem.text = items[position]

        return view
    }
}
  • Using the Custom ArrayAdapter in Activity:
class MainActivity : AppCompatActivity() {

    override fun onCreate(savedInstanceState: Bundle?) {
        super.onCreate(savedInstanceState)
        setContentView(R.layout.activity_main)

        val items = arrayOf("Apple", "Banana", "Cherry", "Date", "Fig")

        val adapter = CustomArrayAdapter(this, R.layout.list_item, items)
        val listView: ListView = findViewById(R.id.listView)
        listView.adapter = adapter
    }
}

In this example, the custom layout has only a TextView, but in a real-world scenario, you might have more complex layouts with multiple views, images, buttons, etc. Adjust the getView() method accordingly to bind the data to the custom layout.

  1. Using ArrayAdapter in Android Kotlin:

    • Description: ArrayAdapter in Android is a bridge between a ListView and the underlying data source, typically an array or a list. It helps in displaying data in a structured way.
    • Code:
      val arrayAdapter = ArrayAdapter<String>(this, android.R.layout.simple_list_item_1, dataArray)
      listView.adapter = arrayAdapter
      
  2. Introduction to ArrayAdapter in Android:

    • Description: ArrayAdapter simplifies the process of binding data to views. It is commonly used with ListView to display a scrollable list of items.
    • Code: (Basic setup)
      val arrayAdapter = ArrayAdapter<String>(this, android.R.layout.simple_list_item_1, dataArray)
      listView.adapter = arrayAdapter
      
  3. Custom ArrayAdapter example in Android:

    • Description: A custom ArrayAdapter allows you to define a custom layout for each item in the list.
    • Code:
      class CustomAdapter(context: Context, resource: Int, objects: List<MyData>) :
          ArrayAdapter<MyData>(context, resource, objects) {
          // Override getView() to customize item view
      }
      
      val customAdapter = CustomAdapter(this, R.layout.custom_list_item, dataList)
      listView.adapter = customAdapter
      
  4. Populating ListView with ArrayAdapter in Android:

    • Description: ArrayAdapter simplifies the process of populating a ListView with data. It takes care of the view creation and binding.
    • Code:
      val arrayAdapter = ArrayAdapter<String>(this, android.R.layout.simple_list_item_1, dataArray)
      listView.adapter = arrayAdapter
      
  5. Creating a simple ArrayAdapter in Android:

    • Description: Creating a simple ArrayAdapter involves specifying the context, layout for each item, and the data source.
    • Code:
      val arrayAdapter = ArrayAdapter<String>(this, android.R.layout.simple_list_item_1, dataArray)
      listView.adapter = arrayAdapter
      
  6. ArrayAdapter for Spinner in Android example:

    • Description: ArrayAdapter can be used with Spinner to create a dropdown menu with a list of items.
    • Code:
      val arrayAdapter = ArrayAdapter<String>(this, android.R.layout.simple_spinner_item, spinnerData)
      arrayAdapter.setDropDownViewResource(android.R.layout.simple_spinner_dropdown_item)
      spinner.adapter = arrayAdapter
      
  7. Filtering data with ArrayAdapter in Android:

    • Description: ArrayAdapter supports filtering by implementing a Filter class. This is useful when dealing with large datasets.
    • Code:
      val arrayAdapter = ArrayAdapter<String>(this, android.R.layout.simple_list_item_1, dataArray)
      listView.adapter = arrayAdapter
      arrayAdapter.filter.filter("FilterText")
      
  8. ArrayAdapter with custom layout in Android:

    • Description: Customize the layout for each item by creating a custom layout resource and using it in the ArrayAdapter.
    • Code:
      val customAdapter = ArrayAdapter<String>(this, R.layout.custom_list_item, dataArray)
      listView.adapter = customAdapter