当用户使用ListView进行数据列表显示是,也可以进行事件处理操作。
还是先看效果图吧,有图有真相
data_list.xml
<TableLayout xmlns:android="http://schemas.android.com/apk/res/android" android:layout_width="fill_parent" android:layout_height="wrap_content" > <TableRow android:id="@+id/icon" android:layout_width="wrap_content" android:layout_height="wrap_content" >//加一个图标可以弄个组件的显示图片 <TextView android:id="@+id/_id" android:gravity="center_vertical" android:layout_width="wrap_content" android:layout_height="wrap_content" android:textSize="12px" /> <TextView android:id="@+id/name" android:gravity="center_vertical" android:layout_width="wrap_content" android:layout_height="wrap_content" android:textSize="12px" /> </TableRow> </TableLayout>
main.xml
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" android:layout_width="fill_parent" android:layout_height="fill_parent" android:orientation="vertical" > <TextView android:id="@+id/info" android:layout_width="fill_parent" android:layout_height="wrap_content" android:gravity="center_horizontal" android:text="shuaishuai" /> <ListView android:id="@+id/datalist" android:layout_width="fill_parent" android:layout_height="wrap_content" > </ListView> </LinearLayout>
package com.example.listview; import java.util.ArrayList; import java.util.HashMap; import java.util.List; import java.util.Map; import android.os.Bundle; import android.app.Activity; import android.view.Menu; import android.view.View; import android.widget.AdapterView; import android.widget.AdapterView.OnItemClickListener; import android.widget.ListView; import android.widget.SimpleAdapter; import android.widget.TextView; public class MainActivity extends Activity { // private int[] pic=new int[]{R.drawable.xianjian01,R.drawable.xianjian02,R.drawable.xianjian04,R.drawable.xianjian05};//显示图片 private String data[][]=new String [][]{{"01","北京"},{"02","tianjing"},{"03","shanghai"}};//定义显示的数据 private List<Map<String,String>> list=new ArrayList<Map<String,String>>();//保存所有的list数据 private ListView datalist;//定义ListView组件 private SimpleAdapter simpleAdapter=null;//适配器 private TextView info; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main);//将组件添加到屏幕中 this.datalist=(ListView)super.findViewById(R.id.datalist);//取得ListView组件 this.info=(TextView)super.findViewById(R.id.info); for(int x=0;x<this.data.length;x++){//循环设置数据 Map<String,String>map=new HashMap<String,String>();//定义Map集合 // map.put("pic", String.valueOf(this.pic[x]));//设置pic显示数据 map.put("_id", data[x][0]);//设置title显示数据 map.put("name", data[x][1]);//设置type显示数据 this.list.add(map);//增加数据 } this.simpleAdapter=new SimpleAdapter(this,//实列化SimpleAdapter this.list,//要包装的数据集合 R.layout.data_list,//要使用的显示模版 new String[]{"_id","name"},//定义显示的key new int[]{R.id._id,R.id.name});//与模版的组件匹配 this.datalist.setAdapter(this.simpleAdapter);//设置显示数据 this.datalist.setOnItemClickListener(new OnItemClickListenerImpl()); } private class OnItemClickListenerImpl implements OnItemClickListener{ @Override public void onItemClick(AdapterView<?> parent, View view, int position, long id) { // TODO 自动生成的方法存根 Map<String,String>map=(Map<String,String>)MainActivity.this.simpleAdapter.getItem(position);//取得列表项 String _id=map.get("_id");//取得key为_id的内容 String name=map.get("name");//取得key为name的内容 MainActivity.this.info.setText("选中的数据Id是:"+_id+",名称是:"+name);//设置文字提示信息 } } @Override public boolean onCreateOptionsMenu(Menu menu) { // Inflate the menu; this adds items to the action bar if it is present. getMenuInflater().inflate(R.menu.main, menu); return true; } }