2016-05-13 5 views
1

listview itemPopup-Menü wie Facebook Zum Bearbeiten/Löschen/Spam

Popup-Menü schreiben:

<menu 
    xmlns:android="http://schemas.android.com/apk/res/android" 
    xmlns:app="http://schemas.android.com/apk/res-auto" 
    xmlns:tools="http://schemas.android.com/tools" 
    tools:context="com.edusols.HomeActivity" > 

    <item 
     app:showAsAction="never" 
     android:id="@+id/one" 
     android:title="abcd" /> 

    <item 
     android:id="@+id/two" 
     android:title="Two"/> 

    <item 
     android:id="@+id/three" 
     android:title="Three"/> 

</menu> 
  • ich ein Listview habe, habe ich Option wie bearbeiten Post und dass alle
  • I will Popup-Menü auf bestimmte Position, ich bekomme Pop-up-Menü, aber nicht an der richtigen Position
  • Ich habe Popup-Menü in Listview-Adapter

Code:

ivOptionMenu.setOnClickListener(new View.OnClickListener() { 
      @Override 
      public void onClick(View v) { 
       if (post_user_id.equals(preferenceHelper.getID())) 
       { 

        PopupMenu popup = new PopupMenu(ctx, ivOptionMenu); 
        popup.getMenuInflater().inflate(R.menu.poupup_menu, popup.getMenu()); 
        popup.setOnMenuItemClickListener(new PopupMenu.OnMenuItemClickListener() { 
         public boolean onMenuItemClick(MenuItem item) { 
          Toast.makeText(ctx,"You Clicked : " + item.getTitle(),Toast.LENGTH_SHORT).show(); 
          return true; 
         } 
        }); 

        popup.show();//showing popup menu 
       } 
       else { 
        PopupMenu popup = new PopupMenu(ctx, ivOptionMenu); 
        popup.getMenuInflater().inflate(R.menu.poupup_menu, popup.getMenu()); 
        popup.setOnMenuItemClickListener(new PopupMenu.OnMenuItemClickListener() { 
         public boolean onMenuItemClick(MenuItem item) { 
          Toast.makeText(ctx,"You Clicked : " + item.getTitle(),Toast.LENGTH_SHORT).show(); 
          return true; 
         } 
        }); 

        popup.show();//showing popup menu 
       } 

How menu appears on click

Antwort

0

PopMenuConstructor (ctx, Ansicht)
Ansicht durch welche PopMenu verbunden wird.

@Override 
    public void onClick(View v) { 
     if (post_user_id.equals(preferenceHelper.getID())) { 
      //PopupMenu popup = new PopupMenu(ctx, ivOptionMenu); 
      //change to this 
      PopupMenu popup = new PopupMenu(ctx, v); 
      . 
      . 
     } 
    } 
1

Erstellen von XML-Datei in/res/menu/popup_menu.xml und fügen Sie diesen Code

<?xml version="1.0" encoding="utf-8"?> 
<menu xmlns:android="http://schemas.android.com/apk/res/android"> 

    <item 
     android:id="@+id/action1" 
     android:title="delete" /> 
    <item 
     android:id="@+id/action2" 
     android:title="properties" /> 

    <item 
     android:id="@+id/action3" 
     android:title="add to queue" /> 

    <item 
     android:id="@+id/action4" 
     android:title="play next" /> 

    <item 
     android:id="@+id/action5" 
     android:title="add to favorite" /> 
</menu> 

Verwenden Sie diesen Code in Java-Datei:

mViewHolder.imagemore.setOnClickListener(new View.OnClickListener() { 

       @Override 
       public void onClick(View v) { 

        final PopupMenu menu = new PopupMenu(context, v); 
        menu.getMenuInflater().inflate(R.menu.popup_menu, menu.getMenu()); 
        menu.show(); 

        menu.setOnMenuItemClickListener(new PopupMenu.OnMenuItemClickListener() { 
         @Override 
         public boolean onMenuItemClick(MenuItem item) { 

          switch (item.getItemId()) { 

           case R.id.action1: 

            deleteSong(position); 

            break; 
           case R.id.action2: 
            Toast.makeText(context, "your desire action is " + item.toString(), Toast.LENGTH_SHORT).show(); 
            break; 
           case R.id.action3: 
            Toast.makeText(context, "your desire action is " + item.toString(), Toast.LENGTH_SHORT).show(); 
            break; 
           case R.id.action4: 
            Toast.makeText(context, "your desire action is " + item.toString(), Toast.LENGTH_SHORT).show(); 
            break; 
           case R.id.action5: 
            Toast.makeText(context, "your desire action is " + item.toString(), Toast.LENGTH_SHORT).show(); 
            break; 
           default: 
            break; 
          } 

          return true; 
         } 
        }); 

       } 
      });