Le problème que j'ai eu ici est que les 2 boutons de l'élément de liste xml semblent interférer avec le ContextMenu dans l'activité principale, l'empêchant de gonfler quand une liste l'article est longuement pressé. Juste comme une note, les boutons eux-mêmes fonctionnent bien. Lorsque je les ai supprimés, le ContextMenu fonctionne parfaitement.Android: Boutons dans le contrôle composé interférer avec ConViewMenu de ListView
L'élément de la liste xml:
<com.anna.mytallykeeper.views.TallyItemView
xmlns:android="http://schemas.android.com/apk/res/android"
android:orientation="vertical"
android:layout_width="fill_parent"
android:layout_height="fill_parent">
<TextView android:id="@+id/item_description"
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:gravity="center_horizontal"
android:textSize="40px"
android:textColor="@color/dijon" />
<RelativeLayout
android:layout_width="fill_parent"
android:layout_height="wrap_content">
<Button android:id="@+id/decrement_button"
android:layout_width="80px"
android:layout_height="80px"
android:layout_centerVertical="true"
android:background="@drawable/minus_button_1" />
<Button android:id="@+id/increment_button"
android:layout_width="80px"
android:layout_height="80px"
android:layout_centerVertical="true"
android:layout_alignParentRight="true"
android:background="@drawable/add_button_1" />
<TextView android:id="@+id/item_count"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_centerVertical="true"
android:layout_toLeftOf="@id/increment_button"
android:layout_toRightOf="@id/decrement_button"
android:gravity="center_horizontal"
android:textSize="80px"
android:textColor="@color/dijon" />
</RelativeLayout>
</com.anna.mytallykeeper.views.TallyItemView>
main.xml
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:orientation="vertical"
android:layout_width="fill_parent"
android:layout_height="fill_parent"
android:background="@color/piplup">
<ListView android:id="@android:id/list"
android:layout_width="fill_parent"
android:layout_height="fill_parent" />
</LinearLayout>
de l'activité principale (hérite de ListActivity):
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.main);
app = (MyTallyKeeperApplication) getApplication();
adapter = new TallyItemListAdapter(this, app.getTallyItems());
setListAdapter(adapter);
Utility.logI((getListView() == null ?
"ListView is null" : "ListView is not null"));
Utility.logI((getListView().getId() ==
android.R.id.list ? "ListView ID is correct" :"ListView ID is not correct"));
registerForContextMenu(getListView());
}
//
public void onCreateContextMenu(ContextMenu menu, View v, ContextMenuInfo menuInfo)
{
Utility.logI(MyTallyKeeperMain.class.getSimpleName() + ".onCreateContextMenu");
super.onCreateContextMenu(menu, v, menuInfo);
if (v.getId() == android.R.id.list) {
getMenuInflater().inflate(R.menu.item_menu, menu);
}
}
de la classe d'adaptation de la liste (hérite des paramètres à partir de BaseAdapter):
public View getView(int position, View view, ViewGroup parent) {
TallyItemView tiv;
if (view == null) {
tiv = (TallyItemView)View.inflate(context, R.layout.tally_item_row, null);
} else {
tiv = (TallyItemView)view;
}
tiv.setTallyItem(tallyItems.get(position));
tiv.getDecrementButton().setOnClickListener(new DecrementListener(position));
tiv.getIncrementButton().setOnClickListener(new IncrementListener(position));
return tiv;
}
signifie que vous voulez ouvrir le menu contextuel sur un clic de bouton? –
sur long-appuyant sur l'article de liste – MissPiplup