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

Введите описание изображения здесь

При нажатии на значок большего размера (3 вертикальных точки, привязанных справа от элемента списка) открывается контекстное меню в Google Music:

Введите описание изображения здесь

Я пытаюсь воссоздать это с тем, что я предполагаю, это контекстное меню. Документация гласит:

Если ваша деятельность использует ListView или GridView, и вы хотите, чтобы каждый элемент предоставлял одно и то же контекстное меню, зарегистрируйте все элементы контекстного меню, передав ListView или GridView для регистрацииForContextMenu ().

Но я все же хочу, чтобы элемент списка сам был кликабельным. Я просто хочу, чтобы контекстное меню отображалось, когда пользователь нажимает на значок больше, как в Google Music.

Поэтому я попробовал это:

@Override public void onMoreClicked(ArtistsListItem item, int position, View imageButton) { registerForContextMenu(imageButton); } 

OnMoreClicked является частью пользовательского прослушивателя, который я сделал для получения обратных вызовов onClick из адаптера списка.

RegisterForContextMenu вызывается, но метод onCreateContextMenu фрагмента никогда не вызывается:

 @Override public void onCreateContextMenu(ContextMenu menu, View view, ContextMenu.ContextMenuInfo info) { //this method is never called super.onCreateContextMenu(menu, view, info); android.view.MenuInflater inflater = mActivity.getMenuInflater(); inflater.inflate(R.menu.artist_list_menu, menu); } 

Я запустил некоторые точки останова, чтобы проверить, работает ли он, но это никогда не делалось. Я сделал то же самое с активностью onCreateContextMenu (класс registerForContextMenu – это фрагмент, но для того, чтобы быть уверенным, что я сделал это именно так), и никаких кубиков тоже.

Я использую ActionBarSherlock, я не знаю, имеет ли это значение, но я думаю, это стоит отметить.

Кто-нибудь есть идея, что здесь происходит?

У меня была аналогичная проблема, вот что я сделал:
В спискеAdapter.getItem я присоединяю слушателя к каждому под-представлению:

 private Fragment mParentFragment; public FriendListAdapter(Fragment fragment, ...) { . . . this.mParentFragment = fragment; } @Override public View getView(int position, View convertView, ViewGroup parent) { if( convertView == null ){ convertView = LayoutInflater.from(mContext).inflate(R.layout.friend_layout, parent, false); } ViewGroup viewGroup = (ViewGroup) convertView; assert viewGroup != null; * * * Button viewMessageButton = (Button) viewGroup.findViewById(R.id.b_send_message); viewMessageButton.setTag(friend.getHandle()); viewMessageButton.setOnClickListener(mParentFragment); return viewGroup; } 

И во Фрагменте я просто слушаю события onClick:

 public class FriendListFragment extends Fragment implements View.OnClickListener { @Override public void onClick(View view) { dialog.show(getActivity().getSupportFragmentManager(), SEND_MESSAGE_DIALOG); } } 

Или вы можете использовать PopupMenu из поддержки v7, которую вы можете установить в студии Android без градиента из окна «Структура проекта».

Выберите « Modules слева», затем « Import Library чтобы перейти к ..../android-studio/sdk/extras/android/support/v7/appcompat затем в главном модуле проекта добавьте appcompat в качестве зависимости от модуля.

Intereting Posts
Не устаревший метод findPreference ()? – Android Как изменить цвет стирания по умолчанию в приложении для рисования на Android? Возможно ли получить MAC-адрес клиентских устройств, находящихся в пределах диапазона Wi-Fi? Отображение кнопки меню на ICS при сохранении android: targetSdkVersion будет 14 FacebookCallback.onCancel вызывается при попытке входа в систему с помощью facebook sdk ViewPagerIndicator – установить вкладку TabPageIndicator в центр Любой способ узнать, когда список прокручивается вверх? Нужно идентифицировать xpath для элемента Android с помощью appium Когда фрагмент фрагмента с SwipeRefreshLayout во время обновления, фрагмент замерзает, но на самом деле все еще работает Не удается загрузить Android Virtual Device Как сравнить двух арраистов? Телефонная связь. Предотвращение вращения при включенной автоориентации? Что такое «jobject this» в JNI и для чего он используется? Настройка значка setError для TextView Текстовое поле IP-адреса в Android?