Menu contextuel dans la coutume ListView
Ce que je veux réaliser:
J'ai un custom ListView adaptateur. À chaque Listitem je veux ajouter un menu déroulant, assez semblable à la ListView dans le Google Play de l'application.
C'est ce que j'ai essayé:
La plupart de mon code vient de ce Android échantillon samples\android-19\ui\ActionBarCompat-ListPopupMenu
CustomFragmentPageAdapter.java:
//create new fragment
mCustomFragment = CustomFragment.newInstance(position);
CustomFragment.java
public class CustomFragment extends ListFragment implements View.OnClickListener{
...
@Override
public void onClick(final View v) {
v.post(new Runnable() {
@Override
public void run() {
showPopupMenu(v);
}
});
}
private void showPopupMenu(View view) {
PopupMenu popup = new PopupMenu(getActivity(), view);
popup.getMenuInflater().inflate(R.menu.popup_menu, popup.getMenu());
popup.show();
}
CustomArrayAdapter:
public class CustomAdapter extends ArrayAdapter<WatchListPlayerItem> {
...
@Override
public View getView(int position, View convertView, ViewGroup parent) {
final int pos = position;
LayoutInflater inflater = (LayoutInflater) context
.getSystemService(Context.LAYOUT_INFLATER_SERVICE);
final View rowView = inflater.inflate(R.layout.watch_list_row, parent, false);
View popupButton = rowView.findViewById(R.id.imgPopUp);
popupButton.setTag(getItem(position));
popupButton.setOnClickListener(mFragment);
return rowView;
}
}
popup_menu.xml:
<?xml version="1.0" encoding="utf-8"?>
<menu xmlns:android="http://schemas.android.com/apk/res/android">
<item
android:id="@+id/install"
android:title="Install" />
<item
android:id="@+id/addtowishlist"
android:title="Add to wishlist" />
</menu>
Logcat sortie:
java.lang.RuntimeException: Failed to resolve attribute at index 6
at android.content.res.TypedArray.getLayoutDimension(TypedArray.java:603)
at android.view.ViewGroup$LayoutParams.setBaseAttributes(ViewGroup.java:6423)
at android.view.ViewGroup$MarginLayoutParams.<init>(ViewGroup.java:6591)
at android.widget.FrameLayout$LayoutParams.<init>(FrameLayout.java:735)
...
L'erreur est levée à popup.show() dans mon CustomFragment.
Cette erreur est clairement me rend fou et de TOUTE aide pour résoudre ce problème est très apprécié!
OriginalL'auteur Al0x | 2015-01-05
Vous devez vous connecter pour publier un commentaire.
J'ai enfin trouvé la solution à mon problème, même si je n'ai pas d'explication pourquoi cette solution fonctionne.
À la suite de l'importation j'ai toujours eu l'erreur:
Il fonctionne très bien avec l'importation suivantes:
J'ai testé le code fourni par Ric (Merci pour la grande aide!) et la mienne. Les deux sont aujourd'hui. Peut-être quelqu'un a une explication pourquoi les questions d'importation dans ce cas.
Cela m'a aidé..
merci beaucoup @Al0x...
OriginalL'auteur Al0x
D'abord créer un
button
dans votre custom-item-listview.xml et puis ajoutez le code ci-dessous:Button
:classe:
EDIT:
Cela fonctionne bien pour moi:
TAB1
CustomList
:Désolé, cochez la case modifier
J'ai déjà essayé avec le contexte au lieu de getActivity(). Est-il d'autres grandes modifier que je ne suis pas le voir?
Vous pouvez poster votre entière CustomAdapter classe?
pastebin.com/DEkPHm01 C'est mon adaptateur à l'aide de votre code.
OriginalL'auteur Rick
utilisation ce comme(contexte d'activité)pas le contexte de l'application ou du contexte
OriginalL'auteur Uzair
Remarque:
N'oublie pas de les importer....
OriginalL'auteur Karthick
J'ai juste eu le même problème quand j'ai modifié le thème style parent:
de
à
Peut-être que votre application utilise le Thème.Le style de Base, qui ne définit pas le nécessaire 6ème paramètre utilisé par PopupMenu. De DONC, la question Comment utiliser ActionBarActivity avec le Thème.Matériel, Thème.AppCompat s'étend Thème.De la Base.AppCompat
OriginalL'auteur Philippe
Rick code de lignes fonctionne parfaitement tant que vous importez les suivantes:
Pas celui ci-dessous:
OriginalL'auteur Josi
J'ai corrigé une erreur similaire juste en passant comme paramètre statique. Par exemple:
Aussi, vous le problème est peut-être celui-ci: Question 152141
J'espère que ça va vous aider, en respectant les
android.support.v7.widget.PopupMenu
importation.Ce qui concerne.
OriginalL'auteur mlopezv86