学习关于ListView的基本使用
书中例子:
java:
package com.example.test;
import androidx.appcompat.app.AppCompatActivity;
import android.os.Bundle;
import android.widget.ArrayAdapter;
import android.widget.ListView;
public class MainActivity extends AppCompatActivity {
private String[] data = {"apple","Banana","Banana","Banana","Banana","Banana","Banana","Banana","Banana","Banana","Banana",
"Orange","Banana","Banana","Banana","Banana","Banana","Banana","Banana",};
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.learn_listview);
ArrayAdapter<String> adapter = new ArrayAdapter<String>(MainActivity.this,
android.R.layout.simple_list_item_1,data);
ListView listView = (ListView)findViewById(R.id.list_view);
listView.setAdapter(adapter);
}
}
布局文件:
<?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=".MainActivity">
<ListView
android:id="@+id/list_view"
android:layout_width="match_parent"
android:layout_height="match_parent"
/>
</androidx.constraintlayout.widget.ConstraintLayout>
关于适配器:
数组中的数据是无法直接传递给ListView的,需要借助适配器来完成,ArrayAdapter属于其中一种。
其构造函数包含:
context代表上下文、resource代表要在实例视图时使用的布局文件的资源 ID(创建ArrayAdapter时候必须指定一个resource,该参数决定每个列表项的外观样式)、objects表示要适配的数据。
关于内置的resource布局文件:
simple_list_item_1: 每个列表项都是一个普通的TextView
simple_list_item_2: 有两个TextView,一个单独在一行,就是分两行显示
simple_list_item_checked: 每个列表项都是一个已勾选的列表项