当用户使用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;
}
}