已单击项目的ID-Android上下文菜单

已单击项目的ID-Android上下文菜单,android,listview,contextmenu,Android,Listview,Contextmenu,G'day, 我有一个用各种文本值填充的ListView,我想让它在长按并打开关联菜单时,可以复制长按的ListItem中的文本。到目前为止,我已经在上下文菜单中弹出了“复制”选项: 谢谢设置一个变量以保存单击的视图: View clicked; 然后在其上创建关联菜单时为其指定一个值: public void onCreateContextMenu(ContextMenu menu, View v, ContextMenuInfo menuInfo) { clicked = v;

G'day,
我有一个用各种文本值填充的ListView,我想让它在长按并打开关联菜单时,可以复制长按的ListItem中的文本。到目前为止,我已经在上下文菜单中弹出了“复制”选项:


谢谢

设置一个变量以保存单击的视图:

View clicked;
然后在其上创建关联菜单时为其指定一个值:

public void onCreateContextMenu(ContextMenu menu, View v, ContextMenuInfo menuInfo)
{
    clicked = v;

    //this was following another question but I don't know what to do with it
    AdapterView.AdapterContextMenuInfo info = (AdapterView.AdapterContextMenuInfo) menuInfo;
    long selectedId = info.id;
    super.onCreateContextMenu(menu, v, menuInfo);
    MenuInflater inflater = getMenuInflater();
    inflater.inflate(R.menu.context, menu);
}
现在,您可以在最终方法中使用它:

public boolean onContextItemSelected(MenuItem item)
{
    AdapterContextMenuInfo info = (AdapterContextMenuInfo) item.getMenuInfo();
    switch (item.getItemId())
   {
    case R.id.copy:
        //used to be in a function but wasn't sure about views
        //yes I know it's depreciated but it works ;)
        ClipboardManager clipboard = (ClipboardManager) getSystemService(CLIPBOARD_SERVICE);

        clipboard.setText(clicked.getText());
        // this should work now properly.

        Context context = getApplicationContext();
        Toast copied = Toast.makeText(context, "Story copied to clipboard.", Toast.LENGTH_LONG);
        copied.show();
        return true;
    default:
        return super.onContextItemSelected(item);
    }
}

我想你已经回答了你自己的问题。id是:

long selectedId = info.id;

@我不知道该把什么放在哪里???是如果我可以传递长时间按下的项目的ID,我可以做…findViewById(ID);当我把它放进去时,Eclipse说这是一个错误,并提出将其更改为item.getTitle(),但这只是将“副本”(我触摸的上下文菜单的标题)放入剪贴板,而我想要的是我原来长按的列表项中的文本抱歉,我的坏消息。调用
onCreateContextMenu
时,可以在变量中存储适当的视图。我将编辑我的答案。使用上述代码,
单击的.getText()
显然是一个错误:“类型视图的getText()方法未定义”
long selectedId = info.id;