我有一个expandListView diaryDisplaylist
这是适配器 DiaryExpandListAdapter mAdapterForAll ,它将用于填充diaryDisplayList
执行此操作的代码段:
mAdapterForAll = new DiaryExpandListAdapter(this, diaryList);
diaryDisplaylist.setAdapter(mAdapterForAll);
日记表的类型为:
diaryList = new ArrayList<Object>();
diaryList将包含来自大约8个数据库的所有项目,根据数据库中存在的条目的日期对其进行分组。 它完美地显示出来。
现在我的扩展列表中包含了属于不同数据库的元素。
因此,我使用的编辑和删除功能
diaryDisplaylist.setOnCreateContextMenuListener(this);
contextMenu的代码段:
@Override
public void onCreateContextMenu(ContextMenu menu, View v, ContextMenuInfo menuInfo) {
super.onCreateContextMenu(menu, v, menuInfo);
ExpandableListView.ExpandableListContextMenuInfo info = (ExpandableListView.ExpandableListContextMenuInfo) menuInfo;
int type = ExpandableListView.getPackedPositionType(info.packedPosition);
if (type == ExpandableListView.PACKED_POSITION_TYPE_CHILD) {
menu.add(0, Constants.MENU_EDIT, 0, "Edit");
menu.add(0, Constants.MENU_DELETE, 1, "Delete");
}
}
@Override
public boolean onContextItemSelected(android.view.MenuItem item) {
ExpandableListContextMenuInfo info = (ExpandableListContextMenuInfo) item.getMenuInfo();
switch (item.getItemId()) {
case Constants.MENU_EDIT:
// once i get item belonging to respective database i can edit
return true;
case Constants.MENU_DELETE:
return true;
default:
return super.onContextItemSelected(item);
}
}
在contextMenuItem中选择了如何找到该项所属的数据库? 我不能使用适配器找到我的对象,因为我在contextItemSelected中没有groupPosition和childPosition。 如果我能得到那些我可以简单使用的那些。
Object selectedObject = mAdapterForAll.getChild(groupPosition, childPosition);
然后使用selectedObject我可以找到
if(selectedObject isInstanceOf db1)
答案 0 :(得分:1)
获得我使用的小组和小孩位置
Object obj = diaryList.get((int) info.packedPosition);
答案 1 :(得分:0)
很抱歉上面的代码有问题,这个代码可以帮我确定从扩展列表视图中的组和子位置
int groupPos = 0, childPos = 0;
int type = ExpandableListView.getPackedPositionType(info.packedPosition);
if (type == ExpandableListView.PACKED_POSITION_TYPE_CHILD) {
groupPos = ExpandableListView
.getPackedPositionGroup(info.packedPosition);
childPos = ExpandableListView
.getPackedPositionChild(info.packedPosition);
}