获取所选项目的位置......?

时间:2013-03-30 14:35:27

标签: java android sql

我对Android很新。这是代码的一部分:

protected void onListItemClick(ListView l, View v, int position, long id) {
super.onListItemClick(l, v, position, id);
Note selectedName = adapter.getItem(position);
adapter.removeItem(selectedName);

如您所见,位置表示所选项目位置。非常好。但我更喜欢长时间点击:

public boolean onContextItemSelected(MenuItem item) {
switch(item.getItemId()) {
case R.id.ctxmemu_delete:
** I need to use POSITION mentioned above! **

但是在这个方法中,getSelectedItemPosition返回位置-9995845834585(或者类似于smth) 或者它会出错(无法将光标移动到位置 - 我在我的应用中使用SQL)

如何从列表中正确获取位置? 附:抱歉我的英语不好:(

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

public int getPosition(){
return cursor.getPosition();    }

并修改:

case R.id.ctxmemu_delete:
int position = adapter.getPosition();
Note seln = adapter.getItem(position);
adapter.removeItem(seln);
return true;

现在它有效...但我认为它太丑了......

3 个答案:

答案 0 :(得分:1)

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

答案 1 :(得分:1)

为什么不使用 onListItemLongClick listener 而不是使用上下文菜单?

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

答案 2 :(得分:1)

public boolean onContextItemSelected(MenuItem item) { ... }

由于您使用的是ContextMenu,因此与ItemClickListener

略有不同

您可以使用 MenuInfo 获取ListView

中的排名
AdapterView.AdapterContextMenuInfo info = 
                         (AdapterView.AdapterContextMenuInfo) item.getMenuInfo();

它具有int属性info.position,返回显示上下文菜单的适配器中的位置。

注意:您也可以查看OnItemLongClickListener作品类似的内容。

相关问题