列表ListView介绍和实例 1.ListView -- ListActivity -- ListAdapter 2.ArrayAdapter结合ListView进行显示 3.SimpleAdapter结合ListView进行显示 4.处理单击ListView事件,处理选择ListView的事件 5.使用SimpleCursorAdapter与ListView进行关联 ListView : 要让一个ListView显示出来须要的3个条件: 1.ListView --- 须要被显示的列表 2.Data --- 和ListView绑定的数据,通常是一个Cursor或字符串数组 3.ListAdapter --- data和ListView的桥梁 --- 适配作用 经常使用ListAdapter子类: ArrayAdapter --- 数组适配 ---- ListAdapter的直接子类 ArrayList<类型>(context,int itemLayout, data) context:上下文环境 itemLayout:自己定义的每一项要显示的Layout data:要显示的数据 样例: ArrayAdapter<String> adapter = new ArrayAdapter<String>(ArrayAdapterListViewActivity.this, android.R.layout.simple_list_item_1, data); android.R.layout.simple_list_item_1 --- 使用Android自带的 每一项Listview显示布局 -- 实际应用中经常自己定义此item布局 特别注意:itemLayout --- ListView中每一项(行)的布局 --- 能够引用系统自带的,但 实际项目中很多其它是使用自己定义的item布局 系统自带的经常使用item布局: android.R.layout.simple_list_item_1 ----- 每一项仅仅有一个TextView android.R.layout.simple_list_item_1 ----- 每一项仅仅有两个TextView android.R.layout.simple_list_item_single_choice ----- 每一项有一个TextView。但这一项能够被选择 SimpleAdapter --- 简单适配 ---- ListAdapter的直接子类 通过SimpleAdapter能够让ListView其中的每一项内容更加个性化, 通常将ListView中某项的布局信息写在XML文件里。这个布局文件通过R.layout.XX -- 引入到ListView中 SimpleAdapter是ArrayList和Listview之间的桥梁 ArrayList中的每一项都是一个Map<String,?>类型。
ArrayList其中的每一项Map对象都和ListView其中的一项进行数据绑定和一一相应
SimpleAdapter的构造器: public SimpleAdapterK(Context context, List<? extends Map<String,?>> data, int resource, String[] from , int[] to)
context -- 上下文 data -- 基于Map的List,Data里面的每一项都和ListIView里的每一项相应。Data里面的每一项都是Map类型。 这个Map类中包括了ListView每一行须要的数据 --- 经常使用 data = new ArrayList<Map<String,Object>>(); resource -- 一个layout, 必须包括在to中出现的那些View,系统提供或自己定义layout布局都可。 系统提供的有:android.R.layout.simpe_list_item_single_choice android.R.layout.two_line_list_item from -- 数组名,每个名字是为了在ArrayList中的每个item中索引Map<String, Object>的Object用的 to -- 这里面是一个TextView的数组。这些TextView以id形式表示。这鞋View必须是TextView 为ListView中的每一项加入事件处理: OnItemClickListener OnItemClickListener listener = new OnItemClickListener() { @Overridepublic void onItemClick(AdapterView<?> parent, View view, int position,long id) { setTitle(parent.getItemAtPosition(position).toString());}};listView.setOnItemClickListener(listener); 说明: onItemClick -- 回调函数。当用户单击ListView每一项时。自己主动运行 parent --- 被单击的ListView view --- 用户操作的那一项 position --- 操作的item项在ListView中的位置 id --- 被选中的那一行的id getItemAtPosition(position) --- 通过position获得和这一行绑定的数据, 本例中仅仅是把改行内容作为title写出来listView.setOnItemClickListener(listener) --- 将监听器注冊到ListView中
实例代码:
ArrayAdapter与ListView
package com.example.androidbasicdemo1;import android.app.Activity;import android.os.Bundle;import android.view.Menu;import android.view.MenuItem;import android.widget.ArrayAdapter;import android.widget.ListView;/** * ArrayList <类型> (context,int itemLayout, data) * context:上下文环境 * itemLayout:自己定义的每一项要显示的Layout * data:要显示的数据 * * 样例: * ArrayAdapteradapter = new ArrayAdapter 类型>(ArrayAdapterListViewActivity.this, android.R.layout.simple_list_item_1, data); android.R.layout.simple_list_item_1 --- 使用Android自带的 每一项Listview显示布局 -- 实际应用中经常自己定义此item布局 * @author JayHe * */public class ArrayAdapterListViewActivity extends Activity { private ListView listView; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_array_adapter_list_view); //从xml布局文件里获得ListView对象 listView = (ListView) findViewById(R.id.arrayadapterlistView1); //定义要显示的数据 String[] data = getResources().getStringArray(R.array.items_country); //定义适配器 ArrayAdapter adapter = new ArrayAdapter (ArrayAdapterListViewActivity.this, android.R.layout.simple_list_item_1, data); //为ListView加入适配器 listView.setAdapter(adapter); } @Override public boolean onCreateOptionsMenu(Menu menu) { getMenuInflater().inflate(R.menu.array_adapter_list_view, menu); return true; } @Override public boolean onOptionsItemSelected(MenuItem item) { int id = item.getItemId(); if (id == R.id.action_settings) { return true; } return super.onOptionsItemSelected(item); }}
SimpleAdapter与ListView
package com.example.androidbasicdemo1;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.view.Menu;import android.view.MenuItem;import android.view.View;import android.widget.AdapterView;import android.widget.AdapterView.OnItemClickListener;import android.widget.ListView;import android.widget.SimpleAdapter;public class SimpleAdapterListViewActivity extends Activity { private List