我不知道如何处理此代码中的删除和编辑
@Override
public void onCreateContextMenu(ContextMenu menu, View v,ContextMenuInfo menuInfo) {
super.onCreateContextMenu(menu, v, menuInfo);
menu.setHeaderTitle("Select");
menu.add(0, R.id.editt, 0, "Edit");
menu.add(0, R.id.delete, 0, "Delete");
menu.add(0, R.id.DeleteAll, 0, "delete all");
}
public boolean onContextItemSelected(MenuItem item) {
AdapterContextMenuInfo info = (AdapterContextMenuInfo) item.getMenuInfo();
switch(item.getItemId())
{
case R.id.editt: {
Intent ed = new Intent(DsTest2Activity.this, Edit.class);
startActivity(ed);
break; }
case R.id.delete: {
break; }
case R.id.DeleteAll: {
SQLiteDatabase ld = openOrCreateDatabase(dbName, Context.MODE_PRIVATE, null);
ld.delete(tableName, null, null);
String[] from = {"task", "_id"};
int[] to = {R.id.textview_id,R.id.checkbox_id};
SimpleAdapter sa = new SimpleAdapter(this, lc, R.layout.checkbox, from, to);
ListView li = (ListView) findViewById(R.id.listview_id);
li.setAdapter(sa);
sa.notifyDataSetChanged();
li.setVisibility(ListView.INVISIBLE);
break; }
default: { return true; }
}
return super.onContextItemSelected(item);
}
当用户长按
时li.setOnItemLongClickListener(new OnItemLongClickListener() {
public boolean onItemLongClick(AdapterView<?> adapter, View view, int position, long id)
{
registerForContextMenu(li);
return false;
}
});
答案 0 :(得分:1)
您必须在活动的registerForContextMenu(li)
方法中调用onCreate()
,或者在使用片段时调用onActivityCreated()
方法。
您无需致电li.setOnItemLongClickListener(...)
。请删除它。
另请参阅以下讨论: How do you implement context menu in a ListActivity on Android? 和 Context menu in list activity