ListView和数据绑定
在android开发中ListView是比较常用的组件,它以列表的形式展示具体内容,并且能够根据数据的长度自适应显示。
下面是具体的例子:
ListView例子效果图
main_list_view.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" > <ListView android:id="@+id/main_list_view_listview" android:layout_width="fill_parent" android:layout_height="fill_parent" /> </LinearLayout>
main_list_view_item.xml配置
<?xml version="1.0" encoding="utf-8"?> <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" android:id="@+id/RelativeLayout_Item" android:layout_width="fill_parent" android:layout_height="wrap_content" android:paddingBottom="5dip" > <ImageView android:id="@+id/main_list_view_item_item_image" android:layout_centerHorizontal="true" android:layout_width="wrap_content" android:layout_height="wrap_content" /> <TextView android:id="@+id/main_list_view_item_item_text" android:layout_centerHorizontal="true" android:layout_width="wrap_content" android:layout_height="wrap_content" android:textSize="20px" android:layout_gravity="center" /> </LinearLayout>
Activity代码
//定义选项菜单
private String[] allOptionsMenuTexts = {"删除","保存","帮助","添加","详细","发送","电话","照相"};
private int[] allOptionsMenuOrders = {5,2,6,1,4,3,7,8};
private int[] allOptionsMenuIds = {Menu.FIRST+1,Menu.FIRST+2,Menu.FIRST+3,Menu.FIRST+4,Menu.FIRST+5,Menu.FIRST+6,Menu.FIRST+7,Menu.FIRST+8};
private int[] allOptionsMenuIcons = {
android.R.drawable.ic_menu_delete,
android.R.drawable.ic_menu_edit,
android.R.drawable.ic_menu_help,
android.R.drawable.ic_menu_add,
android.R.drawable.ic_menu_info_details,
android.R.drawable.ic_menu_send,
android.R.drawable.ic_menu_call,
android.R.drawable.ic_menu_camera
};
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.main_list_view);
//展示ListView
showListView();
}
/**
* 显示ListView.
*/
public void showListView(){
final Context context = this;
Integer[] itemImages = new Integer[allOptionsMenuIcons.length];
for(int i=0;i<itemImages.length;i++){
itemImages[i] = new Integer(allOptionsMenuIcons[i]);
}
//绑定GridView组件内容
List<Object[]> itemValues = new ArrayList<Object[]>();
itemValues.add(allOptionsMenuTexts);
itemValues.add(itemImages);
//定义适配器to参数
int[] to = {R.id.main_list_view_item_item_text,R.id.main_list_view_item_item_image};
int resource = R.layout.main_list_view_item;
//生成适配器:使用自定义工具类 SimpleAdapterUtil.java来生成适配器
SimpleAdapter simpleAdapter = SimpleAdapterUtil.create(context,itemValues,resource,to);
ListView listView = (ListView)findViewById(R.id.main_list_view_listview);
listView.setAdapter(simpleAdapter);
listView.setOnItemClickListener(new OnItemClickListener(){
@Override
public void onItemClick(AdapterView<?> parent, View view,
int position, long id) {
Toast.makeText(context, "["+allOptionsMenuTexts[position]+"]被点击了", Toast.LENGTH_SHORT).show();
}
});
}
备注:SimpleAdapterUtil工具类的完整代码,可以看这篇文章《1个简单的SimpleAdapter工具类-SimpleAdapterUtil 》。