-1

我不知道如何处理这段代码中的删除和编辑

@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;
    }
});
4

1 回答 1

1

You have to call the registerForContextMenu(li) in the onCreate() method of the activity, or in the onActivityCreated() method if you use fragments.

You don't have to call the li.setOnItemLongClickListener(...). Please delete it.

Please also see the following discussions: How do you implement context menu in a ListActivity on Android? and Context menu in list activity

于 2012-12-06T20:48:04.340 回答