Reputation: 3
I need help with a problem I could not find any solution for by now. What I want to achieve:
I have a custom ListView
adapter. To each Listitem I want to add a popup menu
like
payed , not payed , delivred, not delivred.
Upvotes: 0
Views: 394
Reputation: 2962
Menu xml:
<menu xmlns:androclass="http://schemas.android.com/apk/res/android" >
<item
android:id="@+id/one"
android:title="played"/>
<item
android:id="@+id/two"
android:title="not played"/>
</menu>
Code:
listView.setOnItemClickListener(new AdapterView.OnItemClickListener() {
@Override
public void onItemClick(AdapterView<?> parent, View view, int position, long id) {
PopupMenu popup = new PopupMenu(MainActivity.this, listView);
//Inflating the Popup using xml file
popup.getMenuInflater().inflate(R.menu.popup_menu, popup.getMenu());
popup.show();
popup.setOnMenuItemClickListener(new PopupMenu.OnMenuItemClickListener() {
public boolean onMenuItemClick(MenuItem item) {
Toast.makeText(MainActivity.this,"You Clicked : " + item.getTitle(),Toast.LENGTH_SHORT).show();
return true;
}
});
Intent intent = new Intent(MainActivity.this, EditActivity.class);
intent.putExtra("id", id);
intent.putExtra("food", foods.getFoods().get((int) id));
startActivityForResult(intent, FOOD_EDIT);
}
});
Upvotes: 1
Reputation: 1223
Give this a try:
res/menu/mylistmenu.xml
<?xml version="1.0" encoding="utf-8"?>
<menu xmlns:android="http://schemas.android.com/apk/res/android">
<item
android:id="@+id/paid"
android:orderInCategory="100"
android:title="Paid"/>
<item
android:id="@+id/notpaid"
android:orderInCategory="101"
android:title="Not Paid"/>
<item
android:id="@+id/delivered"
android:orderInCategory="103"
android:title="Delivered"/>
<item
android:id="@+id/notdelivered"
android:orderInCategory="104"
android:title="Not Delivered"/>
</menu>
ListItem OnClick Popup
//Status TextView
TextView statustxt = (TextView) findViewById(R.id.statusText);
listView.setOnItemClickListener(new AdapterView.OnItemClickListener() {
@Override
public void onItemClick(AdapterView<?> parent, View view, int position, long id) {
PopupMenu popup = new PopupMenu(view.getContext(),view );
MenuInflater inflater = popup.getMenuInflater();
inflater.inflate(R.menu.mylistmenu, popup.getMenu());
//Handle Menu Click
popup.setOnMenuItemClickListener(new PopupMenu.OnMenuItemClickListener() {
@Override
public boolean onMenuItemClick(MenuItem item) {
{
switch (item.getItemId()){
case option_one:
statustxt.setText("Paid");
case option_two:
statustxt.setText("Not Paid");
case option_three:
statustxt.setText("Delivered");
case option_four:
statustxt.setText("Not Delivered");
}
}
return false;
}
});
popup.show();
Intent intent = new Intent(MainActivity.this, EditActivity.class);
intent.putExtra("id", id);
intent.putExtra("food", foods.getFoods().get((int) id));
startActivityForResult(intent, FOOD_EDIT);
}
});
Upvotes: 0