#java #android #nullpointerexception #expandablelistview #android-contextmenu
#java #Android #исключение nullpointerexception #расширяемый список просмотра #android-contextmenu
Вопрос:
Я пытаюсь удалить элемент из расширяемого списка с помощью контекстного меню. Я сталкиваюсь с исключением нулевого указателя. Пожалуйста, помогите мне решить эту проблему. Ниже приведен мой код:
@Override
public boolean onContextItemSelected(@NonNull MenuItem item) {
super.onContextItemSelected(item);
switch(item.getItemId())
{
case R.id.deleteItem:
AdapterView.AdapterContextMenuInfo info = (AdapterView.AdapterContextMenuInfo) item.getMenuInfo();
int position = info.position;
//this is my ArrayList
postList.remove(position);
Toast.makeText(getActivity().getApplicationContext(), "Deleted an item", Toast.LENGTH_LONG).show();
listAdapter.notifyDataSetChanged();
break;
case R.id.editItem:
break;
}
return true;
}
Комментарии:
1. «Я столкнулся с исключением нулевого указателя», затем проверьте NPE. Что там говорится? Попробуйте решить эту проблему!
2. Item.getMenuInfo возвращает значение null, так как я использую пользовательский адаптер. Без этого я не смогу узнать положение элемента, выбранного в listview.
Ответ №1:
Тип ContextMenuInfo неверен, элементы в Expandablelistview имеют 2 значения позиции,
ExpandableListView.ExpandableListContextMenuInfo info = (ExpandableListView.ExpandableListContextMenuInfo) item.getMenuInfo();
int groupPos = ExpandableListView.getPackedPositionGroup(info.packedPosition);
int childPos = ExpandableListView.getPackedPositionChild(info.packedPosition);
Комментарии:
1. Спасибо, что указали на эту вопиющую ошибку! Решена проблема