7.2 Android Basic UI的布局 ListView演示
2011-03-25 17:05
381 查看
<<ListViewDemo.zip>>
ListView演示
新建项目ListViewDemo,编辑res/layout/main.xml 布局文件如下:
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:orientation="vertical" android:layout_width="fill_parent"
android:layout_height="fill_parent">
<TextView android:layout_width="fill_parent"
android:layout_height="wrap_content" android:text="ListView演示" />
<Button android:text="单列ListView" android:id="@+id/Button01"
android:layout_width="wrap_content" android:layout_height="wrap_content"></Button>
<Button android:text="双列ListView" android:id="@+id/Button02"
android:layout_width="wrap_content" android:layout_height="wrap_content"></Button>
<Button android:text="没有数据的ListView" android:id="@+id/Button03"
android:layout_width="wrap_content" android:layout_height="wrap_content"></Button>
<Button android:text="ListView操作" android:id="@+id/Button04"
android:layout_width="wrap_content" android:layout_height="wrap_content"></Button>
</LinearLayout>
使用4个按钮分别演示ListView的4种状态。
2. 添加4个Activity 分别是ActivityList1,ActivityList2,ActivityList3,ActivityList4. 并在AndroidManifest.xml中配置Activity。
<activity android:name="ActivityList1"></activity>
<activity android:name="ActivityList2"></activity>
<activity android:name="ActivityList3"></activity>
<activity android:name="ActivityList4"></activity>
3. 关联Button事件到4个Activity,在ListViewDemo中添加如下代码:
import android.app.Activity;
import android.content.Intent;
import android.os.Bundle;
import android.view.View;
import android.widget.Button;
public class ListViewDemo extends Activity {
/** Called when the activity is first created. */
private Button button1;
private Button button2;
private Button button3;
private Button button4;
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.main);
//ActivityList1
button1 = (Button)findViewById(R.id.Button01);
button1.setOnClickListener(new Button.OnClickListener(){
@Override
public void onClick(View v) {
// TODO Auto-generated method stub
Intent intent = new Intent(ListViewDemo.this,ActivityList1.class);
startActivity(intent);
}
});
//ActivityList2
button2 = (Button)findViewById(R.id.Button02);
button2.setOnClickListener(new Button.OnClickListener(){
@Override
public void onClick(View v) {
// TODO Auto-generated method stub
Intent intent = new Intent(ListViewDemo.this,ActivityList2.class);
startActivity(intent);
}
});
//ActivityList3
button3 = (Button)findViewById(R.id.Button03);
button3.setOnClickListener(new Button.OnClickListener(){
@Override
public void onClick(View v) {
// TODO Auto-generated method stub
Intent intent = new Intent(ListViewDemo.this,ActivityList3.class);
startActivity(intent);
}
});
//ActivityList4
button4 = (Button)findViewById(R.id.Button04);
button4.setOnClickListener(new Button.OnClickListener(){
@Override
public void onClick(View v) {
// TODO Auto-generated method stub
Intent intent = new Intent(ListViewDemo.this,ActivityList4.class);
startActivity(intent);
}
});
}
}
4. 基本的ListView使用ArrayAdapter来填充数据的演示(ActivityList1)
编辑ActivityList1类,代码如下:
import android.app.Activity;
import android.os.Bundle;
import android.widget.ArrayAdapter;
import android.widget.ListView;
public class ActivityList1 extends Activity {
private ListView listView;
private String[] data={
"苹果取消iOS系统应用开发工具限制",
"谷歌苹果颤抖 十大微软WP7牛机谍照汇总 最快本月上市",
"2000元全键盘智能机推荐 用户关注度极高 ",
"电信校园营销扩张:教师可入网办学生套餐 ",
"HD7延续经典 六大品牌王牌系列机型逐个挑 引领前沿水平",
"摩托罗拉HTC领衔 市售电容屏智能机全推荐 ",
"N8携塞班卷土重来 Symbian系智能强机盘点 ",
"下歌仅需几秒钟 电信天翼无线WiFi实测"
};
@Override
protected void onCreate(Bundle savedInstanceState) {
// TODO Auto-generated method stub
super.onCreate(savedInstanceState);
setTitle("ActivityList1");
listView = new ListView(this);
ArrayAdapter adapter = new ArrayAdapter(this,android.R.layout.simple_list_item_1,data);
listView.setAdapter(adapter);
listView.setItemsCanFocus(true);
listView.setChoiceMode(ListView.CHOICE_MODE_MULTIPLE);
setContentView(listView);
}
}
ListView将要显示的数据定义在String数组当中.
listView = new ListView(this)创建了ListView对象。
使用ArrayAdapter加载数组中的数据,android.R.layout.simple_list_item_1 是系统定义布局资源表示ListView中的每一项只是简单的一个TextView。
listViewSetAdapter(adapter)方法会把ArrayAdapter中的数据显示出来。
Android系统默认的布局方式
android.R.layout.simple_list_item_1 每项只有一个TextView。
android.R.layout.simple_list_item_2 每项有两个TextView。
android.R.laout.simple_list_item_single_choice 每项有一个TextView但这一项可以被选择(RadioBox)。
android.R.layout.simple_list_item_checked 每项有一个TextView,但每项可以被选择(CheckedBox).
5. 使用SimpleAdapter显示两列数据(ActivityList2)
SimpleAdapter可以让ListView中的项更加个性化。通常ListView中的项的布局信息写在一个xml的布局文件中。
ArrayListAdapter是数组和ListView间的桥梁,SimpleAdapter是ArrayList和ListView的桥梁。但是这里的ArrayList中的每一项是一个Map<String,?>类型。
SimpleAdapter的构造函数。
SimpleAdapter(Context context,List<?extends Map<String,?>>data, int resource,String[] from,int[]to);
参数:
Content 上下文的引用。
Data 基于Map<String,?>类型的数组。
Resource layout中定义的资源,这个layout最少要包含to中出现的那些View.
From 名字数组,索引Map<String,Object>的Object用的。
To 是一个TextView数组,以id的形式表示。
编辑ActivityList2如下代码:
import java.util.ArrayList;
import java.util.HashMap;
import java.util.List;
import java.util.Map;
import android.app.Activity;
import android.os.Bundle;
import android.widget.ListView;
import android.widget.SimpleAdapter;
public class ActivityList2 extends Activity {
private ListView listView;
private List<Map<String,Object>> data;
@Override
protected void onCreate(Bundle savedInstanceState) {
// TODO Auto-generated method stub
super.onCreate(savedInstanceState);
setTitle("ActivityList2");
Init();
listView = new ListView(this);
//使用系统的layout显示一项
SimpleAdapter adapter = new SimpleAdapter(this,data,
android.R.layout.simple_list_item_1,
new String[]{"相机"},
new int[]{android.R.id.text1});
listView.setAdapter(adapter);
setContentView(listView);
}
private void Init(){
data = new ArrayList<Map<String,Object>>();
Map<String,Object> item;
item = new HashMap<String,Object>();
item.put("相机","三星 ST550");
item.put("特性","像素数:1220万 传感器尺寸:(1/2.33)英寸 光学变焦:4.6倍 等效于35mm焦距:27-124.2mm 显示屏尺寸:3.5英寸 防抖性能:光学防抖");
data.add(item);
item = new HashMap<String,Object>();
item.put("相机","佳能 G11");
item.put("特性", "光学变焦:5倍 等效于35mm焦距:28-140mm 显示屏尺寸:2.8英寸 防抖性能:光学防抖");
data.add(item);
item = new HashMap<String,Object>();
item.put("相机","尼康D90");
item.put("特性", "有效像素数:1000万 传感器尺寸:(1/2.4)英寸 光学变焦:5倍 等效于35mm焦距:24-120mm 显示屏尺寸:2.7英寸 防抖性能:光学防抖 ");
data.add(item);
item = new HashMap<String,Object>();
item.put("相机","索尼WX1");
item.put("特性", "像素数:1220万 传感器尺寸:(1/2.33)英寸 光学变焦:4.6倍 等效于35mm焦距:27-124.2mm 显示屏尺寸:3.5英寸 防抖性能:光学防抖");
data.add(item);
}
}
将数据的初始化放到了单独的成员方法Init()中。
SimpleAdapter adapter = new SimpleAdapter(this,data,
android.R.layout.simple_list_item_1,
new String[]{"相机"},
new int[]{android.R.id.text1});
使用系统的simple_list_item1来创建单列的listView。
From 和 to 参数的意思就是 将 "相机" 对应的数据 显示在 andorid.R.id.text1上。
更改一下adapter的创建,使用系统的layout显示两项数据:
SimpleAdapter adapter = new SimpleAdapter(this,data,
android.R.layout.simple_list_item_2,
new String[]{"相机","特性"},
new int[]{android.R.id.text1,android.R.id.text2}
);
使用自定的layout显示数据, 在res/layout新建 listitem.xml 布局文件:
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout
xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="wrap_content"
android:layout_height="wrap_content">
<TextView android:id="@+id/mview1" android:layout_width="100px"
android:layout_height="wrap_content" />
<TextView android:id="@+id/mview2"
android:layout_width="wrap_content"
android:layout_height="wrap_content" />
</LinearLayout>
修改adapter的创建:
//使用自定义的layout显示数据
SimpleAdapter adapter = new SimpleAdapter(this,data,
R.layout.listitem,
new String[]{"相机","特性"},
new int[]{R.id.mview1,R.id.mview2}
);
处理ListView的事件,在onCreate()方法中添加如下代码:
//Listview的事件
listView.setOnItemClickListener(new ListView.OnItemClickListener(){
@Override
public void onItemClick(AdapterView<?> parent, View view, int position,
long id) {
// TODO Auto-generated method stub
Toast.makeText(ActivityList2.this, parent.getItemAtPosition(position).toString(), Toast.LENGTH_SHORT).show();
}
});
当ListView中的项被单击的时候会执行此代码,onItemClick是回凋函数,参数的意思是:
AdatperView<?> parent 是被单击的ListView
View view是选中的项
Int position 是选中的View在ListView当中的位置
Int id 是被选中哪一行的id.
getItemAtPosition()方法是获取这一行绑定的数据。
6. 使用ListActivity类来显示列表数据。 ListActivity也是一种ListView每一个ListActivity都和一个xml布局文件关联,布局文件基本上是固定的模式。
在res/layout下新建布局文件list3.xml:
<LinearLayout
xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="wrap_content"
android:layout_height="wrap_content">
<ListView android:id="@id/android:list"
android:layout_width="fill_parent"
android:layout_height="fill_parent"/>
<TextView android:id="@id/android:empty"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="没有数据"/>
</LinearLayout>
定义了一个ListView, id是系统预设的 "@id/andorid:list", 另外定义了一个 TextView用来显示空数据的提示,id也是系统预设的 "@id/android:empty"。
修改ActivityList3的代码如下:
public class ActivityList3 extends ListActivity {
private String[] data = {};
@Override
protected void onCreate(Bundle savedInstanceState) {
// TODO Auto-generated method stub
super.onCreate(savedInstanceState);
setTitle("ActivityList3");
setContentView(R.layout.list3);
ArrayAdapter adapter = new ArrayAdapter<String>(this,
android.R.layout.simple_list_item_1, data);
setListAdapter(adapter);
}
}
使用ArrayAdapter 关联数据,使用系统内置的simple_list_item1. setListAdapter()方法显示adapter中的数据。
给数组添加数据:
private String[] data = {"abc","def","kkkk"};
ListView的事件处理,在ListActivity类中重写onListItemClick方法:
//重写,处理单击事件
@Override
protected void onListItemClick(ListView l, View v, int position, long id) {
// TODO Auto-generated method stub
super.onListItemClick(l, v, position, id);
Toast.makeText(this, l.getItemAtPosition(position).toString(), Toast.LENGTH_SHORT).show();
}
7. ListView不仅仅有OnItemClickListener事件,还有OnItemSelectedListener事件,当某项被选中的时候触发。
将列表数据写到res/string.xml中
<?xml version="1.0" encoding="utf-8"?>
<resources>
<string name="hello">Hello World, ListViewDemo!</string>
<string name="app_name">ListViewDemo</string>
<string-array name="list_data">
<item>list1</item>
<item>list2</item>
<item>list3</item>
<item>list4</item>
<item>list5</item>
<item>list6</item>
</string-array>
</resources>
修改ActivityList4的代码:
public class ActivityList4 extends Activity {
@Override
protected void onCreate(Bundle savedInstanceState) {
// TODO Auto-generated method stub
super.onCreate(savedInstanceState);
setTitle("ActivityList4");
ListView listView = new ListView(this);
String []data = getResources().getStringArray(R.array.list_data);
ArrayAdapter adapter = new ArrayAdapter(this,android.R.layout.simple_list_item_1,data);
listView.setAdapter(adapter);
setContentView(listView);
listView.setOnItemSelectedListener(new ListView.OnItemSelectedListener(){
@Override
public void onItemSelected(AdapterView<?> parentView, View view,
int position, long id) {
// TODO Auto-generated method stub
Toast.makeText(ActivityList4.this, "选中"+parentView.getItemAtPosition(position).toString(), Toast.LENGTH_SHORT).show();
}
@Override
public void onNothingSelected(AdapterView<?> arg0) {
// TODO Auto-generated method stub
}
});
}
}
im@xingquan.org
ListView演示
新建项目ListViewDemo,编辑res/layout/main.xml 布局文件如下:
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:orientation="vertical" android:layout_width="fill_parent"
android:layout_height="fill_parent">
<TextView android:layout_width="fill_parent"
android:layout_height="wrap_content" android:text="ListView演示" />
<Button android:text="单列ListView" android:id="@+id/Button01"
android:layout_width="wrap_content" android:layout_height="wrap_content"></Button>
<Button android:text="双列ListView" android:id="@+id/Button02"
android:layout_width="wrap_content" android:layout_height="wrap_content"></Button>
<Button android:text="没有数据的ListView" android:id="@+id/Button03"
android:layout_width="wrap_content" android:layout_height="wrap_content"></Button>
<Button android:text="ListView操作" android:id="@+id/Button04"
android:layout_width="wrap_content" android:layout_height="wrap_content"></Button>
</LinearLayout>
使用4个按钮分别演示ListView的4种状态。
2. 添加4个Activity 分别是ActivityList1,ActivityList2,ActivityList3,ActivityList4. 并在AndroidManifest.xml中配置Activity。
<activity android:name="ActivityList1"></activity>
<activity android:name="ActivityList2"></activity>
<activity android:name="ActivityList3"></activity>
<activity android:name="ActivityList4"></activity>
3. 关联Button事件到4个Activity,在ListViewDemo中添加如下代码:
import android.app.Activity;
import android.content.Intent;
import android.os.Bundle;
import android.view.View;
import android.widget.Button;
public class ListViewDemo extends Activity {
/** Called when the activity is first created. */
private Button button1;
private Button button2;
private Button button3;
private Button button4;
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.main);
//ActivityList1
button1 = (Button)findViewById(R.id.Button01);
button1.setOnClickListener(new Button.OnClickListener(){
@Override
public void onClick(View v) {
// TODO Auto-generated method stub
Intent intent = new Intent(ListViewDemo.this,ActivityList1.class);
startActivity(intent);
}
});
//ActivityList2
button2 = (Button)findViewById(R.id.Button02);
button2.setOnClickListener(new Button.OnClickListener(){
@Override
public void onClick(View v) {
// TODO Auto-generated method stub
Intent intent = new Intent(ListViewDemo.this,ActivityList2.class);
startActivity(intent);
}
});
//ActivityList3
button3 = (Button)findViewById(R.id.Button03);
button3.setOnClickListener(new Button.OnClickListener(){
@Override
public void onClick(View v) {
// TODO Auto-generated method stub
Intent intent = new Intent(ListViewDemo.this,ActivityList3.class);
startActivity(intent);
}
});
//ActivityList4
button4 = (Button)findViewById(R.id.Button04);
button4.setOnClickListener(new Button.OnClickListener(){
@Override
public void onClick(View v) {
// TODO Auto-generated method stub
Intent intent = new Intent(ListViewDemo.this,ActivityList4.class);
startActivity(intent);
}
});
}
}
4. 基本的ListView使用ArrayAdapter来填充数据的演示(ActivityList1)
编辑ActivityList1类,代码如下:
import android.app.Activity;
import android.os.Bundle;
import android.widget.ArrayAdapter;
import android.widget.ListView;
public class ActivityList1 extends Activity {
private ListView listView;
private String[] data={
"苹果取消iOS系统应用开发工具限制",
"谷歌苹果颤抖 十大微软WP7牛机谍照汇总 最快本月上市",
"2000元全键盘智能机推荐 用户关注度极高 ",
"电信校园营销扩张:教师可入网办学生套餐 ",
"HD7延续经典 六大品牌王牌系列机型逐个挑 引领前沿水平",
"摩托罗拉HTC领衔 市售电容屏智能机全推荐 ",
"N8携塞班卷土重来 Symbian系智能强机盘点 ",
"下歌仅需几秒钟 电信天翼无线WiFi实测"
};
@Override
protected void onCreate(Bundle savedInstanceState) {
// TODO Auto-generated method stub
super.onCreate(savedInstanceState);
setTitle("ActivityList1");
listView = new ListView(this);
ArrayAdapter adapter = new ArrayAdapter(this,android.R.layout.simple_list_item_1,data);
listView.setAdapter(adapter);
listView.setItemsCanFocus(true);
listView.setChoiceMode(ListView.CHOICE_MODE_MULTIPLE);
setContentView(listView);
}
}
ListView将要显示的数据定义在String数组当中.
listView = new ListView(this)创建了ListView对象。
使用ArrayAdapter加载数组中的数据,android.R.layout.simple_list_item_1 是系统定义布局资源表示ListView中的每一项只是简单的一个TextView。
listViewSetAdapter(adapter)方法会把ArrayAdapter中的数据显示出来。
Android系统默认的布局方式
android.R.layout.simple_list_item_1 每项只有一个TextView。
android.R.layout.simple_list_item_2 每项有两个TextView。
android.R.laout.simple_list_item_single_choice 每项有一个TextView但这一项可以被选择(RadioBox)。
android.R.layout.simple_list_item_checked 每项有一个TextView,但每项可以被选择(CheckedBox).
5. 使用SimpleAdapter显示两列数据(ActivityList2)
SimpleAdapter可以让ListView中的项更加个性化。通常ListView中的项的布局信息写在一个xml的布局文件中。
ArrayListAdapter是数组和ListView间的桥梁,SimpleAdapter是ArrayList和ListView的桥梁。但是这里的ArrayList中的每一项是一个Map<String,?>类型。
SimpleAdapter的构造函数。
SimpleAdapter(Context context,List<?extends Map<String,?>>data, int resource,String[] from,int[]to);
参数:
Content 上下文的引用。
Data 基于Map<String,?>类型的数组。
Resource layout中定义的资源,这个layout最少要包含to中出现的那些View.
From 名字数组,索引Map<String,Object>的Object用的。
To 是一个TextView数组,以id的形式表示。
编辑ActivityList2如下代码:
import java.util.ArrayList;
import java.util.HashMap;
import java.util.List;
import java.util.Map;
import android.app.Activity;
import android.os.Bundle;
import android.widget.ListView;
import android.widget.SimpleAdapter;
public class ActivityList2 extends Activity {
private ListView listView;
private List<Map<String,Object>> data;
@Override
protected void onCreate(Bundle savedInstanceState) {
// TODO Auto-generated method stub
super.onCreate(savedInstanceState);
setTitle("ActivityList2");
Init();
listView = new ListView(this);
//使用系统的layout显示一项
SimpleAdapter adapter = new SimpleAdapter(this,data,
android.R.layout.simple_list_item_1,
new String[]{"相机"},
new int[]{android.R.id.text1});
listView.setAdapter(adapter);
setContentView(listView);
}
private void Init(){
data = new ArrayList<Map<String,Object>>();
Map<String,Object> item;
item = new HashMap<String,Object>();
item.put("相机","三星 ST550");
item.put("特性","像素数:1220万 传感器尺寸:(1/2.33)英寸 光学变焦:4.6倍 等效于35mm焦距:27-124.2mm 显示屏尺寸:3.5英寸 防抖性能:光学防抖");
data.add(item);
item = new HashMap<String,Object>();
item.put("相机","佳能 G11");
item.put("特性", "光学变焦:5倍 等效于35mm焦距:28-140mm 显示屏尺寸:2.8英寸 防抖性能:光学防抖");
data.add(item);
item = new HashMap<String,Object>();
item.put("相机","尼康D90");
item.put("特性", "有效像素数:1000万 传感器尺寸:(1/2.4)英寸 光学变焦:5倍 等效于35mm焦距:24-120mm 显示屏尺寸:2.7英寸 防抖性能:光学防抖 ");
data.add(item);
item = new HashMap<String,Object>();
item.put("相机","索尼WX1");
item.put("特性", "像素数:1220万 传感器尺寸:(1/2.33)英寸 光学变焦:4.6倍 等效于35mm焦距:27-124.2mm 显示屏尺寸:3.5英寸 防抖性能:光学防抖");
data.add(item);
}
}
将数据的初始化放到了单独的成员方法Init()中。
SimpleAdapter adapter = new SimpleAdapter(this,data,
android.R.layout.simple_list_item_1,
new String[]{"相机"},
new int[]{android.R.id.text1});
使用系统的simple_list_item1来创建单列的listView。
From 和 to 参数的意思就是 将 "相机" 对应的数据 显示在 andorid.R.id.text1上。
更改一下adapter的创建,使用系统的layout显示两项数据:
SimpleAdapter adapter = new SimpleAdapter(this,data,
android.R.layout.simple_list_item_2,
new String[]{"相机","特性"},
new int[]{android.R.id.text1,android.R.id.text2}
);
使用自定的layout显示数据, 在res/layout新建 listitem.xml 布局文件:
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout
xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="wrap_content"
android:layout_height="wrap_content">
<TextView android:id="@+id/mview1" android:layout_width="100px"
android:layout_height="wrap_content" />
<TextView android:id="@+id/mview2"
android:layout_width="wrap_content"
android:layout_height="wrap_content" />
</LinearLayout>
修改adapter的创建:
//使用自定义的layout显示数据
SimpleAdapter adapter = new SimpleAdapter(this,data,
R.layout.listitem,
new String[]{"相机","特性"},
new int[]{R.id.mview1,R.id.mview2}
);
处理ListView的事件,在onCreate()方法中添加如下代码:
//Listview的事件
listView.setOnItemClickListener(new ListView.OnItemClickListener(){
@Override
public void onItemClick(AdapterView<?> parent, View view, int position,
long id) {
// TODO Auto-generated method stub
Toast.makeText(ActivityList2.this, parent.getItemAtPosition(position).toString(), Toast.LENGTH_SHORT).show();
}
});
当ListView中的项被单击的时候会执行此代码,onItemClick是回凋函数,参数的意思是:
AdatperView<?> parent 是被单击的ListView
View view是选中的项
Int position 是选中的View在ListView当中的位置
Int id 是被选中哪一行的id.
getItemAtPosition()方法是获取这一行绑定的数据。
6. 使用ListActivity类来显示列表数据。 ListActivity也是一种ListView每一个ListActivity都和一个xml布局文件关联,布局文件基本上是固定的模式。
在res/layout下新建布局文件list3.xml:
<LinearLayout
xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="wrap_content"
android:layout_height="wrap_content">
<ListView android:id="@id/android:list"
android:layout_width="fill_parent"
android:layout_height="fill_parent"/>
<TextView android:id="@id/android:empty"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="没有数据"/>
</LinearLayout>
定义了一个ListView, id是系统预设的 "@id/andorid:list", 另外定义了一个 TextView用来显示空数据的提示,id也是系统预设的 "@id/android:empty"。
修改ActivityList3的代码如下:
public class ActivityList3 extends ListActivity {
private String[] data = {};
@Override
protected void onCreate(Bundle savedInstanceState) {
// TODO Auto-generated method stub
super.onCreate(savedInstanceState);
setTitle("ActivityList3");
setContentView(R.layout.list3);
ArrayAdapter adapter = new ArrayAdapter<String>(this,
android.R.layout.simple_list_item_1, data);
setListAdapter(adapter);
}
}
使用ArrayAdapter 关联数据,使用系统内置的simple_list_item1. setListAdapter()方法显示adapter中的数据。
给数组添加数据:
private String[] data = {"abc","def","kkkk"};
ListView的事件处理,在ListActivity类中重写onListItemClick方法:
//重写,处理单击事件
@Override
protected void onListItemClick(ListView l, View v, int position, long id) {
// TODO Auto-generated method stub
super.onListItemClick(l, v, position, id);
Toast.makeText(this, l.getItemAtPosition(position).toString(), Toast.LENGTH_SHORT).show();
}
7. ListView不仅仅有OnItemClickListener事件,还有OnItemSelectedListener事件,当某项被选中的时候触发。
将列表数据写到res/string.xml中
<?xml version="1.0" encoding="utf-8"?>
<resources>
<string name="hello">Hello World, ListViewDemo!</string>
<string name="app_name">ListViewDemo</string>
<string-array name="list_data">
<item>list1</item>
<item>list2</item>
<item>list3</item>
<item>list4</item>
<item>list5</item>
<item>list6</item>
</string-array>
</resources>
修改ActivityList4的代码:
public class ActivityList4 extends Activity {
@Override
protected void onCreate(Bundle savedInstanceState) {
// TODO Auto-generated method stub
super.onCreate(savedInstanceState);
setTitle("ActivityList4");
ListView listView = new ListView(this);
String []data = getResources().getStringArray(R.array.list_data);
ArrayAdapter adapter = new ArrayAdapter(this,android.R.layout.simple_list_item_1,data);
listView.setAdapter(adapter);
setContentView(listView);
listView.setOnItemSelectedListener(new ListView.OnItemSelectedListener(){
@Override
public void onItemSelected(AdapterView<?> parentView, View view,
int position, long id) {
// TODO Auto-generated method stub
Toast.makeText(ActivityList4.this, "选中"+parentView.getItemAtPosition(position).toString(), Toast.LENGTH_SHORT).show();
}
@Override
public void onNothingSelected(AdapterView<?> arg0) {
// TODO Auto-generated method stub
}
});
}
}
im@xingquan.org
相关文章推荐
- 7.2 Android Basic UI的布局 Intent和Activity
- 【Android UI】动态改变ListView布局
- Android开发UI之给ListView设置布局动画效果
- Android开发之ListView添加多种布局效果演示
- 【Android UI】自动显示、隐藏布局的ListView
- Android手机UI设计---”知乎“界面外观模仿篇(六)---在Fragment里使用Gallery结合listview实现listview横滑
- android ListView 自定义布局 有多选框
- Android Listview加载不同布局
- Android核心基础——S02E02_布局演示(LinearLayout, RelativeLayout)
- Android之listview为空时显示布局
- Android学习笔记之RelativeLayout(相对布局),android ListView 几个重要属性
- Android UI学习 - ListView
- Android 解决ListView里面多套布局多个EditText数据混乱问题
- 【Android UI】Android开发之View的几种布局方式及实践
- android listView的item 显示多种不同的布局
- android 切换到有ScrollView +Gridview 或者listview 布局的Activity时会上拉一点
- (转)android UI进阶之实现listview的分页加载
- Android优化——UI优化(一)优化布局层次
- android ListView布局之二(是用simpleAdapter绑定数据)
- 防止Android软键盘影响UI布局