我正在使用一个ExpandableListView lv
. 这就是我所拥有的。
ExpandableListView lv=(ExpandableListView )findViewById(....);
lv.setOnChildClickListener(new ExpandableListView.OnChildClickListener(){
@Override
public boolean onChildClick(ExpandableListView parent, View v,int gp, int cp, long id) {
Toast.makeText(MainActivity.this, "Clicked", Toast.LENGTH_SHORT).show();
//perform action
return true;
}
});
lv.setOnCreateContextMenuListener(new OnCreateContextMenuListener() {
@Override
public void onCreateContextMenu(ContextMenu contextMenu, View v,ContextMenuInfo menuInfo) {
ExpandableListContextMenuInfo info = (ExpandableListContextMenuInfo) menuInfo;
customMenu.show(v);
//do other stuff
contextMenu=null;
}
});
当我长按一个子项目时,它customMenu.show(v)
被调用,当我抬起手指时,它OnClickListener
被调用。类似地,在一个组项目上长按然后松开手指,它ContextmenuListener
会被调用,然后该组会展开以显示子项目。这是正常行为吗?我该如何防止这种情况?
我实际上想long Click
在列表项上做一些事情。返回正常true
工作longClickListener
(消耗点击事件)。但我还需要获取项目的 id、组和子位置,这些仅ContextMenuInfo
在contextmenu
侦听器中提供。