怎么得到listview长按事件中按的是哪个条目?用这个方法不行啊
在处理android中listview的长按事件中,我需要知道长按的是哪个条目,用了网上的一个方法,理应成功,却没有成功,贴出来请教一下各位高手,从setOnCreateContextMenuListener开始往下看就行
package com.example.myktvlist;import java.util.ArrayList;import java.util.HashMap;import android.app.Activity;import android.content.ContentValues;import android.database.Cursor;import android.database.sqlite.SQLiteDatabase;import android.os.Bundle;import android.text.TextUtils;import android.view.ContextMenu;import android.view.ContextMenu.ContextMenuInfo;import android.view.MenuItem;import android.view.View;import android.view.View.OnCreateContextMenuListener;import android.widget.AdapterView;import android.widget.AdapterView.AdapterContextMenuInfo;import android.widget.AdapterView.OnItemLongClickListener;import android.widget.AdapterView.OnItemClickListener;import android.widget.ListView;import android.widget.SimpleAdapter;import android.widget.TextView;import android.widget.Toast;public class ListActivity extends Activity{ //private String songName; //private String singerName; protected static final int COMFIRM = 0; public void onCreate(Bundle savedInstanceState) { final int CONFIRM = 1; System.out.println("step into listActivity"); super.onCreate(savedInstanceState); setContentView(R.layout.my_list_view); final ListView list = (ListView)findViewById(R.id.MyListView); ArrayList<HashMap<String, String>> mylist = new ArrayList<HashMap<String, String>>(); DatabaseHelper dbHelper = new DatabaseHelper(ListActivity.this,"songList"); SQLiteDatabase db = dbHelper.getReadableDatabase(); Cursor cursor = db.query("user", new String[]{"songName","singerName"}, "id=?",new String[]{"1"},null,null, null); System.out.println("query complete"); cursor.moveToFirst(); if(cursor.isFirst()) System.out.println("moveToFirst complete"); do{ System.out.println("step into while"); String songName = cursor.getString(cursor.getColumnIndex("songName")); String singerName = cursor.getString(cursor.getColumnIndex("singerName")); //如果是多项数据怎么办呢? System.out.println("getData complete"); HashMap<String, String> map = new HashMap<String, String>(); map.put("songName",songName); map.put("singerName",singerName); System.out.println("putData complete"); mylist.add(map); System.out.println("addData complete"); //System.out.println("query--->" + name); System.out.println(singerName); }while(cursor.moveToNext()); SimpleAdapter mSchedule = new SimpleAdapter(this, //没什么解释 mylist,//数据来源 R.layout.my_list_item,//ListItem的XML实现 //动态数组与ListItem对应的子项 new String[] {"songName", "singerName"}, //ListItem的XML文件里面的两个TextView ID new int[] {R.id.songName,R.id.singerName}); //添加并且显示 list.setAdapter(mSchedule); list.setOnCreateContextMenuListener(new OnCreateContextMenuListener(){ public void onCreateContextMenu(ContextMenu menu, View arg1,ContextMenuInfo arg2) { menu.setHeaderTitle(R.string.contentMenu); menu.add(0, COMFIRM, 6,R.string.confirm); menu.add(1,1,5,"hah"); } }); list.setOnItemLongClickListener(new OnItemLongClickListener() { public boolean onItemLongClick(AdapterView<?> ada, View view, int index, long longIndex) { list.showContextMenu(); return true; } }); list.setOnItemClickListener(new OnItemClickListener(){ //Toast t=Toast.makeText(this, "长按删除该曲目", Toast.LENGTH_LONG); //t.show(); public void onItemClick(AdapterView<?> arg0, View arg1, int arg2, long arg3) { // TODO Auto-generated method stub } }); db.close(); } //怎么在这个函数知道选择的是哪个条目? public boolean onContextItemSelected(MenuItem item) { AdapterContextMenuInfo info = (AdapterContextMenuInfo) item .getMenuInfo(); // info.targetView得到list.xml中的LinearLayout对象. System.out.println("item = " + item); System.out.println("info = " + info); String songName = ((TextView) info.targetView.findViewById(R.id.songName)) //R.id.confirm .getText().toString(); System.out.println("songName is"); System.out.println(songName); if (!TextUtils.isEmpty(songName)) { if(item.getItemId() == COMFIRM) { DatabaseHelper dbHelper = new DatabaseHelper(ListActivity.this,"songList"); SQLiteDatabase db = dbHelper.getWritableDatabase(); ContentValues values = new ContentValues(); db.delete("user","songName",new String[]{"chen"}); } } return false; }}