私はexpandListViewdiaryDisplaylistを持っています
これは、diaryDisplayListを埋めるために使用されるアダプターDiaryExpandListAdaptermAdapterForAllです。
これを行うコードスニペット:
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)