Ilyass Ouachi
Ilyass Ouachi

Reputation: 3

About Popup menu when list item view pressed

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

Answers (2)

santosh kumar
santosh kumar

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

Suhayl SH
Suhayl SH

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

Related Questions