Java 从具有相同菜单的不同列表中删除项目
我在一个活动中有两个列表视图,我想使用ContextMenu从其中一个列表视图中删除iTen。我想使用相同的上下文菜单,可以吗?我在看这里,但所有的答案都指向两个不同的上下文菜单。谢谢 这是我的密码:Java 从具有相同菜单的不同列表中删除项目,java,android,eclipse,listview,contextmenu,Java,Android,Eclipse,Listview,Contextmenu,我在一个活动中有两个列表视图,我想使用ContextMenu从其中一个列表视图中删除iTen。我想使用相同的上下文菜单,可以吗?我在看这里,但所有的答案都指向两个不同的上下文菜单。谢谢 这是我的密码: //Register both ListViews Listview1= (ListView)findViewById(R.id.PedlstItens) ; Listview1.setOnCreateContextMenuListener(this); regis
//Register both ListViews
Listview1= (ListView)findViewById(R.id.PedlstItens) ;
Listview1.setOnCreateContextMenuListener(this);
registerForContextMenu(Listview1);
Listview2 = (ListView)findViewById(R.id.PedlstCartao) ;
Listview2.setOnCreateContextMenuListener(this);
registerForContextMenu(Listview2);
之后,充气菜单:
public void onCreateContextMenu(ContextMenu menu, View v, ContextMenuInfo menuInfo) {
super.onCreateContextMenu(menu, v, menuInfo);
MenuInflater inflater = getMenuInflater();
inflater.inflate(R.layout.menu_remove, menu);
}
然后上下文菜单行为。。。我不知道如何指向正确的Listview来删除该项:
public boolean onContextItemSelected(MenuItem item) {
AdapterContextMenuInfo info = (AdapterContextMenuInfo) item.getMenuInfo();
***//THIS IS WHERE I DONT KNOW WHAT TO DO***
switch (item.getItemId()) {
case R.id.remove_item:
Listview1.remove(info.position);
Listview1array.notifyDataSetChanged();
return true;
}
return false;
}
找到了一个解决方案:
在“onCreateContextMenu”中,我将列表的Id存储在变量ListToRemove中:
public void onCreateContextMenu(ContextMenu menu, View v, ContextMenuInfo menuInfo) {
super.onCreateContextMenu(menu, v, menuInfo);
MenuInflater inflater = getMenuInflater();
ListToRemove = v.getId(); //Here i store in which listview my ContextMenu was created
inflater.inflate(R.layout.menu_remove, menu);
}
然后,在“onContextItemSelected”中,我做了一个开关来控制行为***注意:我的ContextMenu只有一项,所以我从原始代码中删除了“getItemId()
public boolean onContextItemSelected(MenuItem item) {
AdapterContextMenuInfo info = (AdapterContextMenuInfo) item.getMenuInfo();
boolean retorno = false;
switch (ListToRemove ) {
case R.id.ListView1:
{
ListView1.remove(info.position);
ListView1Array.notifyDataSetChanged();
retorno = true;
break;
}
case R.id.ListView2:
{
ListView2.remove(info.position);
ListView2Array.notifyDataSetChanged();
retorno = true;
break;
}
}
return retorno;
}
工作很好