Java 获取所选项目的位置。。。?

Java 获取所选项目的位置。。。?,java,android,sql,Java,Android,Sql,我对安卓相当陌生。以下是部分代码: protectedvoid onListItemClick(列表视图l、视图v、整数位置、长id){ super.onListItemClick(左、右、位置、id); 注意selectedName=adapter.getItem(位置); adapter.removeItem(selectedName); 如您所见,位置意味着所选项目的位置。这很好。但我更喜欢长时间单击: public boolean onContextItemSelected(菜单项){

我对安卓相当陌生。以下是部分代码:

protectedvoid onListItemClick(列表视图l、视图v、整数位置、长id){
super.onListItemClick(左、右、位置、id);
注意selectedName=adapter.getItem(位置);
adapter.removeItem(selectedName);
如您所见,位置意味着所选项目的位置。这很好。但我更喜欢长时间单击:

public boolean onContextItemSelected(菜单项){
开关(item.getItemId()){
案例R.id.ctxmemu\u删除:
**我需要使用上面提到的位置**
但是在这个方法中,
getSelectedItemPosition
返回位置-9995845834585(或类似的smth) 或者出现错误(无法将光标移动到位置-我在应用程序中使用SQL)

如何正确地从列表中获取位置? 另外,很抱歉我的英语不好:(

UPD: 我已将此添加到我的SQL适配器:

public int getPosition(){
返回cursor.getPosition();}
并修改:

case R.id.ctxmemu\u删除:
int position=adapter.getPosition();
注释seln=适配器.getItem(位置);
适配器。移除项目(seln);
返回true;

现在它可以工作了…但我觉得它太难看了…

你只需要使用onListItemLongClick()而不是onListItemClick()。

为什么不使用一个
onListItemLongClick监听器来代替上下文菜单呢

protected void onListItemLongClick(ListView l, View v, int position, long id) {
super.onListItemLongClick(l, v, position, id);
Note selectedName = adapter.getItem(position);
adapter.removeItem(selectedName);
}
因为你使用的是这个,所以和

您可以使用MenuInfo
ListView

AdapterView.AdapterContextMenuInfo info = 
                         (AdapterView.AdapterContextMenuInfo) item.getMenuInfo();
其中它有
int
属性
info.position
,返回显示上下文菜单的适配器中的位置


注意:你也可以看看类似的作品。

你为什么不使用onListItemLongClick监听器而不是上下文菜单?Kondra检查我的答案:)它应该可以解决你的问题。我现在正在试着理解它。我想让我的上下文菜单(将来)我需要驻留在超类中吗?(或类似的smth)
AdapterView.AdapterContextMenuInfo info = 
                         (AdapterView.AdapterContextMenuInfo) item.getMenuInfo();