代码:package com.TelCtrl;import android.app.Activity;import android.app.AlertDialog;import android.content.Context;import android.content.DialogInterface;import android.database.Cursor;import android.os.Bundle;import android.view.ContextMenu;import android.view.Gravity;import android.view.LayoutInflater;import android.view.Menu;import android.view.MenuItem;import android.view.View;import android.view.ViewGroup;import android.view.ContextMenu.ContextMenuInfo;import android.widget.AbsListView;import android.widget.AdapterView;import android.widget.BaseExpandableListAdapter;import android.widget.CheckBox;import android.widget.ExpandableListView;import android.widget.LinearLayout;import android.widget.TextView;import android.widget.Toast;import android.widget.AdapterView.OnItemLongClickListener;import android.widget.ExpandableListView.ExpandableListContextMenuInfo;import com.TelCtrl.db.TelDbHelper;public class GroupOperation extends Activity{@Overridepublic void onCreate(Bundle savedInstanceState){super.onCreate(savedInstanceState);setContentView(R.layout.groupoperation);mExpandableListView = (ExpandableListView) findViewById(R.id.idGroupOperationList);mExpandableListAdapter = new ExpandableListAdapterOfGroupOperation(this);mExpandableListView.setAdapter(mExpandableListAdapter);groupArrayLen = mGroupCursor.getCount();mExpandableListView.setOnItemLongClickListener(new OnItemLongClickListener(){@Overridepublic boolean onItemLongClick(AdapterView<?> arg0,final View arg1, int arg2, long arg3){new AlertDialog.Builder(GroupOperation.this).setIcon(android.R.drawable.ic_dialog_alert).setTitle("确认删除?").setPositiveButton("是",new DialogInterface.OnClickListener(){public void onClick(DialogInterface dialog,int whichButton){arg1.getParent();Toast.makeText(GroupOperation.this, "删除成功",Toast.LENGTH_SHORT).show();}}).setNegativeButton("否",new DialogInterface.OnClickListener(){public void onClick(DialogInterface dialog,int whichButton){Toast.makeText(GroupOperation.this, "取消删除",Toast.LENGTH_SHORT).show();}}).create().show();return false;}});}// 为列表的每一项创建上下文菜单(即长按后呼出的菜单)@Overridepublic void onCreateContextMenu(ContextMenu menu, View v,ContextMenuInfo menuInfo){menu.setHeaderTitle("是否删除?");menu.add(0, GROUP_C_MENU_DEL, 0, "删除");menu.add(0, GROUP_C_MENU_CANCE, 0, "取消");}// 单击上下文菜单后的逻辑@Overridepublic boolean onContextItemSelected(MenuItem item){switch (item.getItemId()){case GROUP_C_MENU_DEL:ExpandableListContextMenuInfo info = (ExpandableListContextMenuInfo) item.getMenuInfo();String title = ((TextView) info.targetView).getText().toString();int type = ExpandableListView.getPackedPositionType(info.packedPosition);if (type == ExpandableListView.PACKED_POSITION_TYPE_CHILD){int groupPos = ExpandableListView.getPackedPositionGroup(info.packedPosition);int childPos = ExpandableListView.getPackedPositionChild(info.packedPosition);Toast.makeText(this,"删除" + title + " - Group Index: " + groupPos+ " Child Index: " + childPos + "成功!",Toast.LENGTH_SHORT).show();return true;} else if (type == ExpandableListView.PACKED_POSITION_TYPE_GROUP){int groupPos = ExpandableListView.getPackedPositionGroup(info.packedPosition);Toast.makeText(this,"删除" + title + " - Group Index: " + groupPos + "成功!",Toast.LENGTH_SHORT).show();return true;}break;case GROUP_C_MENU_CANCE:closeContextMenu();break;default:break;}return false;}public class ExpandableListAdapterOfGroupOperation extendsBaseExpandableListAdapter{public ExpandableListAdapterOfGroupOperation(Context context){this.mContext = context;TelDbHelper dbHelper = new TelDbHelper(context);/* * ContentValues values = new ContentValues(); values.put("name", * "我的顾客"); SQLiteDatabase db = dbHelper.getWritableDatabase(); * db.insert("telbookgroup", null, values); */mGroupCursor = dbHelper.query("select * from telbookgroup", null);mCursor = dbHelper.query("select * from telbook", null);}@Overridepublic Object getChild(int groupPosition, int childPosition){return null;}@Overridepublic long getChildId(int groupPosition, int childPosition){return childPosition;}@Overridepublic int getChildrenCount(int groupPosition){return mCursor.getCount();}@Overridepublic View getChildView(int groupPosition, int childPosition,boolean isLastChild, View convertView, ViewGroup parent){LayoutInflater layoutInflater = (LayoutInflater) mContext.getSystemService(Context.LAYOUT_INFLATER_SERVICE);GroupOperationItem item = (GroupOperationItem) layoutInflater.inflate(R.layout.groupoperationitem, null);mCursor.moveToPosition(childPosition);item.setTitie(mCursor.getString(1));item.setRemark(mCursor.getString(2));return item;}@Overridepublic Object getGroup(int groupPosition){return null;}@Overridepublic int getGroupCount(){return groupArrayLen;}@Overridepublic long getGroupId(int groupPosition){return groupPosition;}@Overridepublic View getGroupView(int groupPosition, boolean isExpanded,View convertView, ViewGroup parent){mGroupCursor.moveToPosition(groupPosition);String string = mGroupCursor.getString(1);return getGenericView(string);}@Overridepublic boolean hasStableIds(){return true;}@Overridepublic boolean isChildSelectable(int groupPosition, int childPosition){return true;}public LinearLayout getGenericView(String string){AbsListView.LayoutParams layoutParams = new AbsListView.LayoutParams(ViewGroup.LayoutParams.FILL_PARENT, 64);LinearLayout ll = new LinearLayout(this.mContext);CheckBox cBox = new CheckBox(this.mContext);// CheckBox的android:focusable="false"cBox.setFocusable(false);TextView text = new TextView(this.mContext);ll.setLayoutParams(layoutParams);ll.setGravity(Gravity.CENTER_VERTICAL | Gravity.LEFT);ll.setHorizontalGravity(LinearLayout.HORIZONTAL);ll.setPadding(36, 0, 0, 0);ll.addView(cBox);ll.addView(text);text.setText(string);return ll;}private Context mContext;}private ExpandableListView mExpandableListView;private ExpandableListAdapterOfGroupOperation mExpandableListAdapter;private Cursor mGroupCursor;private Cursor mCursor;private int groupArrayLen;private final int GROUP_C_MENU_DEL = Menu.FIRST;private final int GROUP_C_MENU_CANCE = Menu.FIRST + 1;}