Есть код для выбора пункта меню для удаления позиции с 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, напрямую через контекстное меню?
Можно получить позицию из MenuInfo
:
@Override
public boolean onContextItemSelected(MenuItem item)
{
switch (item.getItemId())
{
case R.id.removeFav:
AdapterContextMenuInfo mi = (AdapterContextMenuInfo) item.getMenuInfo();
int position = mi.position;
// Ваш код
break;
Кофе для программистов: как напиток влияет на продуктивность кодеров?
Рекламные вывески: как привлечь внимание и увеличить продажи
Стратегії та тренди в SMM - Технології, що формують майбутнє сьогодні
Выделенный сервер, что это, для чего нужен и какие характеристики важны?
Современные решения для бизнеса: как облачные и виртуальные технологии меняют рынок
Создаю spring-приложение со следующей структурой и деплою его на сервере томкэт
Необходимо создать один файл с ключами (очевидно чтобы удешевить работу переводчиков) У нас два проекта: android и iosПереводы хранятся в POEditor,...