转自: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
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
01.
package
com.blogtest;
02.
03.
import
android.app.Activity;
04.
import
android.os.Bundle;
05.
import
android.widget.ArrayAdapter;
06.
import
android.widget.ListView;
07.
08.
public
class
ListViewTestActivity
extends
Activity {
09.
10.
private
static
String[] strs =
new
String[] {
"1"
,
"2"
,
"3"
,
"4"
,
"5"
};
//定义要显示的数据
11.
private
ListView myListView;
12.
13.
/** Called when the activity is first created. */
14.
@Override
15.
public
void
onCreate(Bundle savedInstanceState) {
16.
super
.onCreate(savedInstanceState);
17.
setContentView(R.layout.listviewtest);
18.
findWidgets();
19.
setAdapter();
20.
}
21.
22.
private
void
findWidgets() {
23.
myListView = (ListView) findViewById(R.id.mylistview);
24.
}
25.
26.
private
void
setAdapter() {
27.
myListView.setAdapter(
new
ArrayAdapter<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()方法。
修改的代码片段如下:
1.
private
void
setAdapter() {
2.
myListView.setAdapter(
new
ArrayAdapter<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类文件:
01.
package
com.blogtest;
02.
03.
import
android.app.Activity;
04.
import
android.app.AlertDialog;
05.
import
android.os.Bundle;
06.
import
android.view.View;
07.
import
android.widget.AdapterView;
08.
import
android.widget.AdapterView.OnItemClickListener;
09.
import
android.widget.ArrayAdapter;
10.
import
android.widget.ListView;
11.
12.
public
class
ListViewTestActivity
extends
Activity {
13.
14.
private
static
String[] strs =
new
String[] {
"0"
,
"1"
,
"2"
,
"3"
,
"4"
,
"5"
};
15.
private
ListView myListView;
16.
17.
/** Called when the activity is first created. */
18.
@Override
19.
public
void
onCreate(Bundle savedInstanceState) {
20.
super
.onCreate(savedInstanceState);
21.
setContentView(R.layout.main);
22.
findWidgets();
23.
setAdapter();
24.
setListener();
25.
}
26.
27.
private
void
findWidgets() {
28.
myListView = (ListView) findViewById(R.id.mylistview);
29.
}
30.
31.
private
void
setAdapter() {
32.
myListView.setAdapter(
new
ArrayAdapter<String>(
this
,
33.
android.R.layout.simple_list_item_1, strs));
34.
}
35.
36.
private
void
setListener() {
37.
myListView.setOnItemClickListener(
new
OnItemClickListener() {
38.
39.
@Override
40.
public
void
onItemClick(AdapterView<?> arg0, View arg1,
int
arg2,
41.
long
arg3) {
42.
// TODO Auto-generated method stub
43.
new
AlertDialog.Builder(ListViewTestActivity.
this
)
44.
.setMessage(
"Clicked Line No."
+ arg2)
45.
.setPositiveButton(
"Confirm"
,
null
).show();
46.
}
47.
});
48.
}
49.
50.
}