listview元素
- 每一个item的View
- 填入item的图片或数据
- 连接数据和ListView的适配器
设置item的View
Activity.xml
定义ListView控件
<? xmlversion="1.0" encoding="utf-8" ?>
<LinearLayout ... >
<ListView
android:id="@+id/ListView"
android: ...
/>
</LinearLayout>
layout/item.xml
定义item的内容
<? xmlversion="1.0" encoding="utf-8" ?>
<RelativeLayout
xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_height="fill_parent"
android:layout_width="fill_parent">
<!-- 添加item的图片项 -->
<ImageView
android:id="@+id/ItemImage"
android:layout_alignParentRight="true"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
/>
<!-- 添加item的文本项 -->
<TextView
android:id="@+id/ItemText"
android:textSize="20sp"
android:layout_height="wrap_content"
android:layout_width="fill_parent"
/>
</RelativeLayout>
常用适配器
适配器 | 功能 |
---|---|
ArrayAdapter< T > | 绑定一个数组 |
SimpleAdapter | 绑定在xml中定义的控件对应的数据 |
SimpleCursorAdapter | 绑定游标得到的数据 |
BaseAdapter | 通用的基础适配器 |
实例
SimpleAdapter
- 申请
ListView
类型
private ListView List;
- 在
onCreate()
中关联控件
List = (ListView) findViewById( R.id.listView );
- 定义一个动态数组用于存放一个
item
的数据
ArrayList<HashMap<String, Object>> listItem = new ArrayList<HashMap<String, Object>>();
- 定义一个动态数组用于存放一个
item的项
的数据
HashMap<String, Object> map = new HashMap<String, Object>();
- 向
item的项
中加数据
map.put( "ItemImage", R.drawable.XXX );
map.put( "ItemText", "文本内容" );
put()
参数:
String
item项的名称Object
这个item项的内容
- 申请适配器
SimpleAdapter ListAdapter = new SimpleAdapter
(
this,
listItem, // 绑定item的数据
R.layout.item, // 绑定每一个ListItem的布局
new String[] { "ItemImage", "ItemText" }, // item项的名称
new int[] { R.id.ItemImage, R.id.ItemText } // item项的id
);
- 绑定适配器
List.setAdapter( ListAdapter );
- 设置监点击监听事件
List.setOnItemClickListener
(
new OnItemClickListener()
{
@Override
public void onItemClick( AdapterView<?> arg0, View view, int itemNumber, long arg )
{
// itemNumber: 点击的item项编号
}
}
);
- 设置监长按监听事件
List.setOnItemLongClickListener
(
new AdapterView.OnItemLongClickListener()
{
@Override
public boolean onItemLongClick( AdapterView<?> arg0, View view, int itemNumber, long arg )
{
// itemNumber: 点击的item项编号
return true/false;
}
}
);
onItemLongClick()
返回值:
true
只会执行长按监听false
长按之后会紧接着执行点击监听