Hallo,
ich versuche ein ContextMenu für ein ExpandableListView zu implementieren. Es wird aber nur für die Group-Items und nicht für die Child-Items aufgerufen.
Scheinbar ruft ein longClick auf Child-Items onCreateContextMenu nicht auf, da nicht einmal die Logausgabe bei einem longClick auf ein Child-Item ausgegeben wird.
Ich frage mich, ob man die Child-Items separat registrieren muss, ich finde dazu aber nichts in der Doku.
Gruß
ich versuche ein ContextMenu für ein ExpandableListView zu implementieren. Es wird aber nur für die Group-Items und nicht für die Child-Items aufgerufen.
Scheinbar ruft ein longClick auf Child-Items onCreateContextMenu nicht auf, da nicht einmal die Logausgabe bei einem longClick auf ein Child-Item ausgegeben wird.
Java:
@Override
protected void onCreate(Bundle savedInstanceState) {
//...
setListAdapter(mAdapter);
registerForContextMenu(getExpandableListView());
}
Java:
@Override
public void onCreateContextMenu(ContextMenu menu, View v, ContextMenuInfo menuInfo) {
super.onCreateContextMenu(menu, v, menuInfo);
Log.i("", "Click");
ExpandableListView.ExpandableListContextMenuInfo info = (ExpandableListView.ExpandableListContextMenuInfo) menuInfo;
int type = ExpandableListView.getPackedPositionType(info.packedPosition);
int groupPosition = ExpandableListView.getPackedPositionGroup(info.packedPosition);
int childPosition = ExpandableListView.getPackedPositionChild(info.packedPosition);
// Show context menu for groups
if (type == ExpandableListView.PACKED_POSITION_TYPE_GROUP) {
menu.setHeaderTitle("Group");
menu.add(0, 0, 1, "Delete");
// Show context menu for children
} else if (type == ExpandableListView.PACKED_POSITION_TYPE_CHILD) {
menu.setHeaderTitle("Child");
menu.add(0, 0, 1, "Delete");
}
}
Java:
@Override
public boolean onContextItemSelected(MenuItem item) {
ExpandableListView.ExpandableListContextMenuInfo info = (ExpandableListView.ExpandableListContextMenuInfo) item
.getMenuInfo();
int type = ExpandableListView.getPackedPositionType(info.packedPosition);
int groupPosition = ExpandableListView.getPackedPositionGroup(info.packedPosition);
int childPosition = ExpandableListView.getPackedPositionChild(info.packedPosition);
if (type == ExpandableListView.PACKED_POSITION_TYPE_GROUP) {
// do something with parent
} else if (type == ExpandableListView.PACKED_POSITION_TYPE_CHILD) {
// do someting with child
}
return super.onContextItemSelected(item);
}
Ich frage mich, ob man die Child-Items separat registrieren muss, ich finde dazu aber nichts in der Doku.
Gruß