我有一个 expandListView diaryDisplaylist
这是适配器DiaryExpandListAdapter mAdapterForAll将用于填充 diaryDisplayList
执行此操作的代码片段:
mAdapterForAll = new DiaryExpandListAdapter(this, diaryList);
diaryDisplaylist.setAdapter(mAdapterForAll);
日记列表的类型:
diaryList = new ArrayList<Object>();
diaryList 将包含来自大约 8 个数据库的所有项目,expandlist 根据数据库中存在的条目时间日期对这些数据库进行分组。它完美地展示了它。
现在我有扩展列表,其中包含属于不同数据库的元素。
所以对于我使用的编辑和删除功能
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 selected 中,我如何找到该项目所属的数据库?我无法使用适配器找到我的对象,因为我在 contextItemSelected 中没有 groupPosition 和 childPosition。如果我能得到那些我可以简单地使用的。
Object selectedObject = mAdapterForAll.getChild(groupPosition, childPosition);
然后使用 selectedObject 我可以发现
if(selectedObject isInstanceOf db1)