Как избавиться от OnItemClickListener?

132
10 декабря 2018, 22:10

Есть код для выбора пункта меню для удаления позиции с ArrayList:

@Override
public boolean onContextItemSelected(MenuItem item)
{
    switch (item.getItemId())
    {
        case R.id.removeFav:
            listView.setOnItemClickListener(new AdapterView.OnItemClickListener() {
                @Override
                public void onItemClick(AdapterView<?> adapterView, View view, int position, long id) {
                    favoritNews.remove(position);
                    adapter.notifyDataSetChanged();
                    tinyDB.clear();
                    Gson gsonCreate = new Gson();
                    ArrayList<String> gsonString = new ArrayList<>();
                    for(int i = 0; i < Favorites.favoritNews.size(); i++)
                        gsonString.add(gsonCreate.toJson(Favorites.favoritNews.get(i)));
                    tinyDB.putListString("tinyFavoritNews",gsonString);
                    Toast.makeText(Favorites.this, "Позиция удалена из избранного", Toast.LENGTH_SHORT).show();
                }
            });
            break;

Проблема в том, что обновление адаптера происходит не по нажатию на пункт меню, а при повторном кратком нажатии на позицию списка. То есть: длительное нажатие - Удалить - Краткое нажатие - Обновление списка.

Можно ли как-то реализовать поиск позиции массива без использования OnItemClickListener, напрямую через контекстное меню?

Answer 1

Можно получить позицию из MenuInfo:

@Override
public boolean onContextItemSelected(MenuItem item)
{
    switch (item.getItemId())
    {
        case R.id.removeFav:
            AdapterContextMenuInfo mi = (AdapterContextMenuInfo) item.getMenuInfo();
            int position = mi.position;
            // Ваш код
            break;
READ ALSO
Почему не работает rest - controller?

Почему не работает rest - controller?

Создаю spring-приложение со следующей структурой и деплою его на сервере томкэт

162
Минимальное пропущенное число

Минимальное пропущенное число

Решаю на Java следующую задачу:

135
Decompile .class file bytecode version 49.0(java 5)

Decompile .class file bytecode version 49.0(java 5)

Столкнулся с такой проблемой

177
Синхронизировать ключи строк в android и ios

Синхронизировать ключи строк в android и ios

Необходимо создать один файл с ключами (очевидно чтобы удешевить работу переводчиков) У нас два проекта: android и iosПереводы хранятся в POEditor,...

131