(1)在XML中添加
<ListView android:id="@+id/vlist" android:layout_width="wrap_content" android:layout_height="wrap_content">
</ListView>
(2)增加LIST事件,包括ContextMenu菜单监听:
listView = new ListView(this);
//增加相关的ContextMenu菜单。
listView.setOnCreateContextMenuListener(new OnCreateContextMenuListener() {
public void onCreateContextMenu(ContextMenu menu, View v, ContextMenu.ContextMenuInfo menuInfo) {
menu.add(0, 1, 0, "打电话");
menu.add(0, 2, 0, "发短信");
menu.add(0, 3, 0, "退出");
}
});
//添加短按
listView.setOnItemClickListener(new OnItemClickListener() {
public void onItemClick(AdapterView<?> arg0, View arg1, int arg2,
long arg3) {
//SelectItem=arg2;
}
});
// //长按事件,会和ContextMenu菜单监听冲突
// listView.setOnItemLongClickListener(
// new OnItemLongClickListener(){public boolean onItemLongClick(AdapterView parent, View view, int position,long id) {
// // Log.e("CallLogActivity", view.toString() + "position=" + position);
// // CharSequence number = ((TextView) view).getText();
// SelectItem= position;
// return true;}
// });
setContentView(listView);
(3)绑定数据:
data = m.getData().getString("data"); // 从消息拿出数据
String[] dataMore=data.split(";");
List<Map<String, Object>> list = new ArrayList<Map<String, Object>>();
for(int i=0;i<dataMore.length;i++)
{
String[] inf=dataMore[i].split(",");
Map<String, Object> map = new HashMap<String, Object>();
map.put("title", inf[0]);
map.put("info", inf[2]);
map.put("img", R.drawable.icon);
list.add(map);
}
SimpleAdapter adapter = new SimpleAdapter(otherlist.this, list,R.layout.vlist2,
new String[] { "title", "info", "img" },
new int[] { R.id.title, R.id.info, R.id.img });
listView.setAdapter(adapter);
(4)对ContextMenu的处理:
public boolean onContextItemSelected(MenuItem aItem) {
//处理弹出的ContextMenu。。
ContextMenuInfo menuInfo = (ContextMenuInfo) aItem.getMenuInfo();
/* Switch on the ID of the item, to get what the user selected. */
switch (aItem.getItemId()) {
case 1:
AdapterContextMenuInfo info = (AdapterContextMenuInfo) aItem.getMenuInfo();//这个很重要,查了半天资料哦
if (info == null) {
return super.onContextItemSelected(aItem);
}
/* Get the selected item out of the Adapter by its position. */
Map<String, Object> map =(Map<String, Object>)listView.getAdapter().getItem(info.position);
//关联listview的点击项位置
/* Remove it from the list.*/
String tel=(String)map.get("info");
Intent DialIntent = new Intent(Intent.ACTION_DIAL,Uri.parse("tel:"+ tel));
DialIntent.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK );
/** Finally start the Activity */
startActivity(DialIntent);
return true; /* true means: "we handled the event". */
}
return false;
}