在android中ListView是展现数据用到最多的一个组件,也是非常非常重要的一个组件,在android开发当中基本上处处都可以看到,例如,大家常用到的QQ,网页,等等一些客户端基本上就是有listView组成的。在这里我介绍的是simpleadapter 来生成listView。这个是用到最多的。因为在做listView,这个可以生成一些复杂的listView组件。
这个和其他的组件有点不同,那就是这个组件,我们一般会写一个模板来做。
首先我们来定义一个模板。
<?xml version="1.0" encoding="utf-8"?>
<TableLayout
xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="fill_parent"
android:layout_height="wrap_content">
<TableRow >
<TextView
android:id="@+id/simpleName"
android:textSize="15px"
android:gravity="center_vertical"
android:layout_width="wrap_content"
android:layout_height="wrap_content" />
<TextView
android:id="@+id/simpleSex"
android:textSize="15px"
android:gravity="center_vertical"
android:layout_width="wrap_content"
android:layout_height="wrap_content" />
</TableRow>
</TableLayout>
这个模板就是在你的listview中每一行显示的布局。我们用的是表格布局
下面我们定义我们的主页面的布局
<?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:textSize="25px"
android:gravity="center_horizontal"
android:text="simpleadapter"/>
<ListView android:id="@+id/simpleAdapterId"
android:layout_width="fill_parent"
android:layout_height="wrap_content"/>
</LinearLayout>
这里你会看到一个listview 这个就是和上面模板布局进行关联的。这个关联我们要在代码中实现
private SimpleAdapter simpleAdapter=null;
private List<Map<String, String>> list=new ArrayList<Map<String,String>>();
private ListView listView=null;
protectedvoid onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
super.setContentView(R.layout.mylistviewtwo);
this.listView=(ListView)super.findViewById(R.id.simpleAdapterId);
this.simpleAdapter = new SimpleAdapter(this,this.getData(),
R.layout.data_list, new String[]{"name","sex"}, newint[]{
R.id.simpleName, R.id.simpleSex });
this.listView.setAdapter(this.simpleAdapter);
}
private List<Map<String, String>> getData(){
for(int i=0;i<20;i++){
Map<String,String>map=new HashMap<String, String>();
map.put("name", "bruce"+i);
map.put("sex", "男");
this.list.add(map);
}
returnthis.list;
}
在这里你会看到很多其他的类SimpleAdapter 这个就是listview装载数据的一个类。this.simpleAdapter = new SimpleAdapter(this,this.getData(),
R.layout.data_list, new String[]{"name","sex"}, newint[]{
R.id.simpleName, R.id.simpleSex });
this.listView.setAdapter(this.simpleAdapter);
}
这个就是它的实现,它会有5个参数,第一个是上下文,第二个是它的数据源
这个数据源我们一般用List<Map<String, String>> 这个格式。第三个就是我们的模板,第4个是我们的List<Map<String, String>> 中map的key 第五个是我们模板要放数据的位置的id 必须是和第4个参数一一对应,这样我们的数据也能相应的放对位置。这个做完,我们就把模板,数据,一一对应的着到的位置,放在了SimpleAdapter中。接下来就是我们要和主布局的listview进行绑定,这样就很简单的。this.listView.setAdapter(this.simpleAdapter);
这样我们的listview就做好了。
在做这个的时候,一定要注意,模板,主页的布局,要不然就显示不出数据了。
下面我说个简单的点击事件。
this.listView.setOnItemClickListener(new OnItemClickListener(){
publicvoid onItemClick(AdapterView<?> adapter, View view, int position,
long id) {
这个里面用到最多的就是position 这个就是你选择的是哪个行。在这里面你就可以做表格点击事件进行操作了。
}});