отправка действия в качестве аргумента пользовательскому адаптеру списка просмотра, а затем отправка его в класс всплывающего меню, а затем назначение того же действия - PullRequest
0 голосов
/ 05 декабря 2018

У меня есть ListView с несколькими членами, и каждый член состоит из 5 элементов

Одним из этих 5 элементов является Imageview с именем "delete_item", который предназначен для удаления члена, которому он принадлежит (если пользователь длинныйщелкает по нему)

Когда пользователь долго нажимает «delete_item», я открываю всплывающее меню, состоящее из 2 элементов, так что пользователь выбирает один из них:
1 - корзина Imageview
2 -return Imageview

Если пользователь нажимает на корзину Imageview, тогда этот элемент удаляется, и если пользователь нажимает на элемент возврата, ничего не произойдет, кроме закрытия диалогового окна следующим образом:

popupWindow.dismiss();

Мне нужно передать Activity из адаптера Listview во всплывающий класс для инфляции:

LayoutInflater inflater = (LayoutInflater) myActivity.getSystemService(LAYOUT_INFLATER_SERVICE);

Все работает нормально, но есть 2 вопроса:

Вопрос 1- Является ли правильным действие отправлять Activity в качестве аргумента сначала в пользовательский адаптер Listview, а затем во второй раз в класс всплывающих окон, вызываемых из этого адаптера?

Вопрос 2 - Когда пользователь щелкает по корзине Imageview и я удаляю участника, я повторно нацеливаюсь на действие, из которого появляется всплывающее меню. Является ли это истинным действием, направленным на то же действие, в котором мы находимся?

Ответы [ 2 ]

0 голосов
/ 05 декабря 2018

В дополнение к Insane Developer ответ на ваш второй вопрос:

В вашем адаптере должен быть метод notifiyDataSetChanged () для перерисовки вашего ListView.Это намного лучше, чем возобновление активности.

0 голосов
/ 05 декабря 2018

Вы можете просто получить LayoutInflater через любой контекст.

Вы можете получить контекст из любого представления.Например,

Context ctx=view.getContext();
LayoutInflater inflater= ((AppCompatActivity)ctx).getLayoutInflater();

альтернативно, если у вас есть какой-либо объект-контейнер, просто получите его: container.getLayoutInflater();

...