Android ListView 是垂直滚动列表中显示的视图,使用 Adapter 从列表(如数组或数据库)中获取内容的列表项会自动插入列表中。
适配器(Adapter)实际上是UI组件和将数据填充到UI组件中的数据源之间的桥梁,适配器保存数据并将数据发送到适配器视图,该视图可以从适配器视图获取数据,并在不同的视图上显示数据。
ListView 和 GridView 是 AdapterView 的子类,可以通过将它们绑定到 Adapter 来填充它们,该适配器检索来自外部源的数据,并创建一个表示每个数据条目的视图。
Android提供了Adapter的多个子类,这些子类可用于检索各种类型的数据并为AdapterView构建视图(即ListView或GridView)。常见的适配器是ArrayAdapter,Base Adapter,CursorAdapter,SimpleCursorAdapter,SpinnerAdapter和WrapperListAdapter。
List View - 属性
以下是特定于GridView的重要属性-
Sr.No | Attribute & 描述 |
---|---|
1 | android:id 这是唯一标识布局的ID。 |
2 | android:divider 这是可绘制的或可在列表项之间绘制的颜色。 |
3 | android:dividerHeight 这指定分隔线的高度。可以是px,dp,sp,in或mm。 |
4 | android:entries 指定对将填充ListView的数组资源的引用。 |
5 | android:footerDividersEnabled 当设置为false时,ListView将不会在每个页脚视图之前绘制分隔线。默认值是true。 |
6 | android:headerDividersEnabled 设置为false时,ListView不会在每个标题视图之后绘制分隔线。默认值是true。 |
ArrayAdapter
当您的数据源是数组时,可以使用此适配器。默认情况下,ArrayAdapter通过在每个项目上调用toString()并将其内容放置在TextView中,为每个数组项目创建一个视图。假设您有一个要在ListView中显示的字符串数组,请使用构造函数初始化一个新的ArrayAdapter,以指定每个字符串和字符串数组的布局-
ArrayAdapter adapter = new ArrayAdapter<String>(this,R.layout.ListView,StringArray);
这是此构造函数的参数-
第一个参数 this 是应用程序context上下文,在大多数情况下,请将其保留为 this 。
第二个参数将在XML文件中进行布局定义,并为数组中的每个字符串 TextView组件 。
最终参数是将在文本视图中填充的字符串数组。
创建数组适配器后,只需在 ListView 对象上调用 setAdapter(),如下所示-
ListView listView = (ListView) findViewById(R.id.listview); listView.setAdapter(adapter);
您将在XML文件的res/layout目录下定义列表视图。对于无涯教程的示例,无涯教程将使用activity_main.xml文件。
ArrayAdapter - 示例
下面的示例将引导您完成简单的步骤,以展示如何使用ListView创建自己的Android应用程序。
以下是修改后的主要Activity文件 src/com.example.ListDisplay/ListDisplay.java 的内容。
package com.example.ListDisplay;import android.os.Bundle; import android.app.Activity; import android.view.Menu; import android.widget.ArrayAdapter; import android.widget.ListView;public class ListDisplay extends Activity {// Array of strings...String[] mobileArray = {"Android","IPhone","WindowsMobile","Blackberry","WebOS","Ubuntu","Windows7","Max OS X"};@Overrideprotected void onCreate(Bundle savedInstanceState) {super.onCreate(savedInstanceState);setContentView(R.layout.activity_main);ArrayAdapter adapter = new ArrayAdapter<String>(this, R.layout.activity_listview, mobileArray);ListView listView = (ListView) findViewById(R.id.mobile_list);listView.setAdapter(adapter);} }
以下是 res/layout/activity_main.xml 文件的内容-
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"xmlns:tools="http://schemas.android.com/tools"android:layout_width="match_parent"android:layout_height="match_parent"android:orientation="vertical"tools:context=".ListActivity" ><ListViewandroid:id="@+id/mobile_list"android:layout_width="match_parent"android:layout_height="wrap_content" ></ListView></LinearLayout>
以下是 res/values/strings.xml 的内容,以定义两个新的常量-
<?xml version="1.0" encoding="utf-8"?> <resources><string name="app_name">ListDisplay</string><string name="action_settings">Settings</string> </resources>
以下是 res/layout/activity_listview.xml 文件的内容-
<?xml version="1.0" encoding="utf-8"?> <!-- Single List Item Design --><TextView xmlns:android="http://schemas.android.com/apk/res/android"android:id="@+id/label"android:layout_width="fill_parent"android:layout_height="fill_parent"android:padding="10dip"android:textSize="16dip"android:textStyle="bold" > </TextView>
单击"运行工具栏。 Android studio将应用程序安装在您的AVD上并启动它,如果设置和应用程序一切正常,它将在"Emulator"窗口中显示-
SimpleCursorAdapter
当您的数据源是数据库Cursor时,可以使用此适配器,使用 SimpleCursorAdapter 时,必须指定用于 Cursor 中每一行的布局,以及Cursor中的获取哪些值显示。
如果要获取创建人员姓名和电话列表,则可以执行查询,该查询返回一个Cursor,其中包含每个人的一行以及姓名和电话列。然后,您创建一个字符串数组,该字符串数组为实图填充数据
String[] fromColumns = {ContactsContract.Data.DISPLAY_NAME, ContactsContract.CommonDataKinds.Phone.NUMBER}; int[] toViews = {R.id.display_name, R.id.phone_number};
实例化SimpleCursorAdapter时,传递用于每个输出的布局,包含输出的Cursor以及这两个数组-
SimpleCursorAdapter adapter = new SimpleCursorAdapter(this, R.layout.person_name_and_number, cursor, fromColumns, toViews, 0);ListView listView = getListView(); listView.setAdapter(adapter);
然后,SimpleCursorAdapter使用所提供的布局为Cursor中的每一行创建一个视图,方法是将" from Columns"项插入相应的 toViews 视图。
Android 中的 List View函数 - 无涯教程网无涯教程网提供Android ListView 是垂直滚动列表中显示的视图,使用 Adapter 从列表(如数组或数据库)...https://www.learnfk.com/android/android-list-view.html