- 实例
- 题目
- 程序结果展示界面
- 涉及到的知识点
- 实现过程
- 源码
使用ListView控件和ArrayAdapter数据适配器实现列表方式的选择。
-
列表控件ListView及其数据适配器
ListView
是列表数据显示控件,以列表形式显示。ListAdapter
及其相关类用于显示列表数据的数据适配器接口。抽象类
BaseAdapter
实现了ListAdapter
接口,同时又是类ArrayAdapter
和SimpleAdapter
的超类。单列数据的显示可以采用
ArrayAdapter
。常用构造方法
ArrayAdapter(Context,int,int,List
:第一个参数是上下文,第二参数是列表控件的列表项的 布局文件 ,第三参数是列表布局文件中显示数据的控件,第四参数是列表数据。) 列表项的数据项有多个,则可采用
SimpleAdapter
。 -
列表项选择监听器
抽象类AdapterView
是ListView
的超类(但不是直接父类),提供了设置列表项单击事件监听器的重要方法setOnItemClickListener()
和内部接口OnItemClickListener
,用于定义用户选择了某个列表项后的动作。
- 新建一个Android应用工程
- 创建MainActivity对应的布局文件activity_main.xml,只包含一个ListView控件
- 创建一个与第2步中ListView控件相关的列表布局文件list_item.xml包含一个ImageView控件和一个TextView控件
- 编写程序MainActivity.java
- 运行
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=".MainActivity">
<ListView android:layout_width="match_parent" android:layout_height="wrap_content"
android:id="@+id/listView"/>
LinearLayout>
list_item.xml
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:orientation="horizontal"
android:layout_width="match_parent"
android:layout_height="match_parent">
<ImageView android:layout_width="wrap_content" android:layout_height="wrap_content"
android:src="@drawable/ic_launcher_foreground"/>
<TextView android:layout_width="wrap_content" android:layout_height="wrap_content"
android:id="@+id/tv"
android:layout_gravity="center_vertical"/>
LinearLayout>
MainActivity.java
package com.example.application;
import android.view.Gravity;
import android.view.View;
import android.widget.*;
import androidx.appcompat.app.AppCompatActivity;
import android.os.Bundle;
import java.util.ArrayList;
import java.util.List;
public class MainActivity extends AppCompatActivity {
private List<String> listData = new ArrayList<String>();
private ListView listView;
private ArrayAdapter<String> adapter;//指定接口参数的类型为String类型
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
listView = (ListView) this.findViewById(R.id.listView);//显示列表的控件
listData.add("北京");
listData.add("上海");
listData.add("武汉");//给列表项赋值
adapter = new ArrayAdapter<String>(this,R.layout.list_item,R.id.tv,listData);
listView.setAdapter(adapter);
listView.setOnItemClickListener(new AdapterView.OnItemClickListener() {
@Override
public void onItemClick(AdapterView<?> adapterView, View view, int i, long l) {
String str = "你选择了"+adapter.getItem(i);
Toast toast = Toast.makeText(MainActivity.this, str, Toast.LENGTH_SHORT);
toast.setGravity(Gravity.CENTER,0,0);
toast.show();
}
});
}
}
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)