0

我有一个 XML 布局,它有两个编辑文本字段,一个用于“标题”,另一个用于“故事”,当用户在这些文本字段中输入他的数据并按下后退按钮时,该条目将保存在列表中视图作为标题集。列表视图存在于活动中,比如 A1。现在 A1 扩展了 Activity。此外,只要“长按”列表中的项目,就会出现一个上下文菜单,其中包含编辑、删除和阅读按钮。现在,如果按下编辑按钮,我需要打开另一个活动,该活动可以编辑在与单击的项目相对应的文本字段中输入的数据,此外,我还需要在列表中单击的项目的 ID 和位置。我正在使用 ListView 类型的列表变量来添加我的适配器。此外,我正在检查“

这是活动 A1 的一些代码:“ static id_item_clicked;

@Override
public void onItemClick(AdapterView<?> arg0, View arg1, int arg2, long arg3) {
    // here arg3 is the id of the item which is pressed
    registerForContextMenu(arg1);
    final long row_passed = arg3;
    Cursor c = (Cursor) arg0.getItemAtPosition(arg2);
    title = c.getString(c.getColumnIndex(DataHolder.KEY_TITLE));
    story = c.getString(c.getColumnIndex(DataHolder.KEY_STORY));
            ........

@Override
public boolean onItemLongClick(AdapterView<?> arg0, View arg1, int arg2,
        long arg3) {
    // TODO Auto-generated method stub
    id_item_clicked = arg3;
    return false;
}


    @Override
public void onCreateContextMenu(ContextMenu menu, View v,
        ContextMenuInfo menuInfo) {
    // TODO Auto-generated method stub
    super.onCreateContextMenu(menu, v, menuInfo);
    menu.add("EDIT");
    menu.add("READ");
    menu.add("DELETE");
}

@Override
public boolean onContextItemSelected(MenuItem item) {
    // TODO Auto-generated method stub
    if (item.getTitle() == "EDIT") {

        int position = list.getSelectedItemPosition();
        long item_id = list.getSelectedItemId();


    }
    if (item.getTitle() == "READ") {

    }
    if (item.getTitle() == "DELETE") {

    }
    return super.onContextItemSelected(item);
} "
4

1 回答 1

1

您需要使用 获取上下文菜单信息AdapterContextMenuInfo,然后info.id将为您提供行 ID:

@Override
public boolean onContextItemSelected(MenuItem item) {
    AdapterContextMenuInfo info = (AdapterContextMenuInfo) item.getMenuInfo();
    long rowid = info.id    // This is your row id
    // Your code here
}
于 2012-05-24T11:08:04.007 回答