Android开发ListView 添加点击事件

来源:互联网 发布:python 微信告警 编辑:程序博客网 时间:2024/05/15 23:51

转自:http://www.it165.net/pro/html/201404/11740.html

本文只介绍ListView控件的常见用法,关于ListView的详细介绍,请移步ListView的属性及方法详解

一、ListView的使用步骤

ListView的使用通常有以下三个要素:

(1)ListView中每个条目的布局;

(2)填充进入ListView中的内容;

(3)将内容与页面进行整合的Adapter.

因此,使用ListView也通常有以下三个步骤:

(1)创建ListView条目的布局文件(或使用Android SDK提供的布局);

(2)创建填充进入ListView中的内容,如字符串、图片等;

(3)创建Adapter并将其与ListView绑定.

二、使用默认的布局文件创建ListView

因为本例中使用的是Android SDK默认的布局文件:android.R.layout.simple_list_item_1,所以只需创建主Activity布局文件。

ListViewTest.xml

view sourceprint?
01.<?xml version="1.0"encoding="utf-8"?>
02.<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
03.android:layout_width="fill_parent"
04.android:layout_height="fill_parent"
05.android:orientation="vertical">
06. 
07.<ListView
08.android:id="@+id/mylistview"
09.android:layout_width="fill_parent"
10.android:layout_height="fill_parent">
11.</ListView>
12. 
13.</LinearLayout>

接下来是Activity文件。

ListViewTestActivity.java

view sourceprint?
01.packagecom.blogtest;
02. 
03.importandroid.app.Activity;
04.importandroid.os.Bundle;
05.importandroid.widget.ArrayAdapter;
06.importandroid.widget.ListView;
07. 
08.publicclass ListViewTestActivity extends Activity {
09. 
10.privatestatic String[] strs = newString[] { "1","2", "3","4", "5"};//定义要显示的数据
11.privateListView myListView;
12. 
13./** Called when the activity is first created. */
14.@Override
15.publicvoid onCreate(Bundle savedInstanceState) {
16.super.onCreate(savedInstanceState);
17.setContentView(R.layout.listviewtest);
18.findWidgets();
19.setAdapter();
20.}
21. 
22.privatevoid findWidgets() {
23.myListView = (ListView) findViewById(R.id.mylistview);
24.}
25. 
26.privatevoid setAdapter() {
27.myListView.setAdapter(newArrayAdapter<String>(this,       //此例中用的是ArrayAdapter
28.android.R.layout.simple_list_item_1, strs));//使用系统自带的布局文件
29.}
30. 
31.}
运行结果为:

\

三、支持多项选择的ListView

Android还提供了一个支持多项选择的item布局文件:android.R.layout.simple_list_item_multiple_choice.

但还必须调用ListView.setChoiceMode()方法。

修改的代码片段如下:

view sourceprint?
1.privatevoid setAdapter() {
2.myListView.setAdapter(newArrayAdapter<String>(this,
3.android.R.layout.simple_list_item_multiple_choice, strs));
4.myListView.setChoiceMode(ListView.CHOICE_MODE_MULTIPLE);
5.}

运行结果为:

\

四、响应触摸事件

为了让ListView中的Item响应点击事件,需要创建一个OnItemClickListener类并绑定给该ListView。废话不多说,以下为Activity类文件:

view sourceprint?
01.packagecom.blogtest;
02. 
03.importandroid.app.Activity;
04.importandroid.app.AlertDialog;
05.importandroid.os.Bundle;
06.importandroid.view.View;
07.importandroid.widget.AdapterView;
08.importandroid.widget.AdapterView.OnItemClickListener;
09.importandroid.widget.ArrayAdapter;
10.importandroid.widget.ListView;
11. 
12.publicclass ListViewTestActivity extends Activity {
13. 
14.privatestatic String[] strs = newString[] { "0","1","2","3", "4","5" };
15.privateListView myListView;
16. 
17./** Called when the activity is first created. */
18.@Override
19.publicvoid onCreate(Bundle savedInstanceState) {
20.super.onCreate(savedInstanceState);
21.setContentView(R.layout.main);
22.findWidgets();
23.setAdapter();
24.setListener();
25.}
26. 
27.privatevoid findWidgets() {
28.myListView = (ListView) findViewById(R.id.mylistview);
29.}
30. 
31.privatevoid setAdapter() {
32.myListView.setAdapter(newArrayAdapter<String>(this,
33.android.R.layout.simple_list_item_1, strs));
34.}
35. 
36.privatevoid setListener() {
37.myListView.setOnItemClickListener(newOnItemClickListener() {
38. 
39.@Override
40.publicvoid onItemClick(AdapterView<?> arg0, View arg1,int arg2,
41.longarg3) {
42.// TODO Auto-generated method stub
43.newAlertDialog.Builder(ListViewTestActivity.this)
44..setMessage("Clicked Line No."+ arg2)
45..setPositiveButton("Confirm",null).show();
46.}
47.});
48.}
49. 
50.}
运行结果为:

除了OnItemClickListener之外,还有OnItemLongClickListener,OnItemSelectedListener等监听器.
0 0