-2

在我的代码中,我想从列表视图和数据库中删除选定的项目。我正在使用上下文菜单。我正在获取职位列表。

代码:

public boolean onContextItemSelected(MenuItem item) {
    // TODO Auto-generated method stub
    AdapterContextMenuInfo menuInfo = (AdapterContextMenuInfo) item
            .getMenuInfo();
    // Track track = (Track)mAdapter.getItem(info.position);
    switch (item.getItemId()) {
    case R.id.delete:
        Toast.makeText(getApplicationContext(),
                "Deleted" + menuInfo.position, Toast.LENGTH_LONG).show();
        // delete(menuInfo.id);

        return true;
    case R.id.add:
        Toast.makeText(getApplicationContext(), "Add Successfully",
                Toast.LENGTH_LONG).show();
        return true;
    case R.id.view:
        Toast.makeText(getApplicationContext(), "Viewed", Toast.LENGTH_LONG)
                .show();

    default:
        Toast.makeText(getApplicationContext(), "HI", Toast.LENGTH_LONG)
                .show();
    }
    return super.onContextItemSelected(item);
}

在此处输入图像描述

我只得到位置,但找不到图像中的名称、描述、日期和金钱。我怎样才能找到其中之一,以便通过使用姓名日期或金钱,我可以从列表视图和数据库中删除列表。

4

2 回答 2

2

如果您想删除不需要任何信息的记录,您只需要数据库中记录的行 ID,您可以通过menuInfo.id在您的onContextItemSelected方法中使用从上下文菜单中获取它。

例子:

case R.id.delete:
    deleteItem(menuInfo.id);  //  Your delete method with the paramter of the row id
    Toast.makeText(getApplicationContext(),
            "Deleted" + menuInfo.position, Toast.LENGTH_LONG).show();
    return true;

delete 方法(大概在您的数据库助手类中):

public boolean deleteItem(long rowId) {
    return mDb.delete(YOUR_TABLE, YOUR_ROWID + "=" + rowId, null) > 0;
}
于 2012-10-30T16:26:04.013 回答
0

看到我之前遇到过同样的问题

所以我给你的解决方案是

View yourView; 

        public void onCreateContextMenu(ContextMenu menu, View v,
                ContextMenuInfo menuInfo) {
            // TODO Auto-generated method stub

            yourView = (TableRow) v; // here you can have your own view in my case i have Table row
            MenuInflater inflater = getMenuInflater();
            inflater.inflate(R.menu.table_row_menu, menu);  

        }

而且,一旦您获得视图,您将在tag与视图关联的帮助下获得信息

于 2012-10-30T17:23:49.220 回答