长按和鲍勃菜单

时间:2012-12-06 19:49:47

标签: android

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

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

1 个答案:

答案 0 :(得分:1)

您必须在活动的registerForContextMenu(li)方法中调用onCreate(),或者在使用片段时调用onActivityCreated()方法。

您无需致电li.setOnItemLongClickListener(...)。请删除它。

另请参阅以下讨论: How do you implement context menu in a ListActivity on Android?Context menu in list activity