[Android development] ArrayAdapter

Adapter is the bridge between AdapterView view and data, used to process data and bind data to AdapterView

step

  1. Prepare layout (display effect of each item)
  2. Prepare the data source
  3. Instantiate the adapter
  4. Set up adapter for ListView

ArrayAdapter theme container

<?xml version="1.0" encoding="utf-8"?>
<androidx.constraintlayout.widget.ConstraintLayout xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:app="http://schemas.android.com/apk/res-auto"
    xmlns:tools="http://schemas.android.com/tools"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    tools:context=".ArrayActivity">

    <ListView
        android:id="@+id/list_view1"
        android:layout_width="match_parent"
        android:layout_height="match_parent"></ListView>

</androidx.constraintlayout.widget.ConstraintLayout>

Layout settings for each item

<?xml version="1.0" encoding="utf-8"?>
<!--注意是TextView-->
<TextView xmlns:android="http://schemas.android.com/apk/res/android"
    android:layout_width="match_parent"
    android:layout_height="wrap_content"
    android:textSize="28sp"
    android:textColor="#fbb8ac">

</TextView>

Prepare the data source and adapter

class ArrayActivity : AppCompatActivity() {
    
    
    override fun onCreate(savedInstanceState: Bundle?) {
    
    
        super.onCreate(savedInstanceState)
        setContentView(R.layout.activity_array)

        val listView1 = findViewById<ListView>(R.id.list_view1)

        //参数1:环境上下文(this)
        //参数2:代表数据项所应用的布局
        //参数3:数据源(数组)
        val data = arrayOf<String?>("AA", "BB", "CC", "DD", "FF", "AA", "BB", "CC", "DD", "FF", "AA", "BB", "CC", "DD", "FF", "AA", "BB", "CC", "DD", "FF", "AA", "BB", "CC", "DD", "FF")
        val adapter: ArrayAdapter<*> = ArrayAdapter<Any?>(this, R.layout.item, data)
        listView1.adapter = adapter
    }
}
//使用android自带的资源
val adapter: ArrayAdapter<*> = ArrayAdapter<Any?>(this, android.R.layout.simple_list_item_1, data)

Add pictures beside each line of text

<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    android:orientation="horizontal">

    <ImageView
        android:layout_width="50dp"
        android:layout_height="50dp"
        android:background="@mipmap/ic_launcher" />

    <TextView
        android:id="@+id/txt1"
        android:layout_width="match_parent"
        android:layout_height="50dp" />

</LinearLayout>
//这里有4个参数,第三个参数是选定作为数据源的TextView
val adapter: ArrayAdapter<*> = ArrayAdapter<Any?>(this, R.layout.item2, R.id.txt1, data)

Guess you like

Origin blog.csdn.net/weixin_42020386/article/details/112883850