Как удалить элемент из расширяемого списка при длительном нажатии с выбранным ContextMenuItemSelected?

#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. Спасибо, что указали на эту вопиющую ошибку! Решена проблема