2016-06-15 6 views
0

У меня есть listview: Как показано на рисунке ниже, когда пользователь нажимает меню опций downarrow, появляется всплывающее окно , будет несколько сообщений (например, Facebook), опциональное меню pop- с другим вариантом Если пользователь является владельцем этого сообщения, тогда пункт меню будет редактировать сообщение, удалять сообщение , если пользователь не является владельцем, чем пункт меню будет спам сообщение У меня есть 2 меню для этого. Это не работает в соответствии с требованием, если пользователь не является владельцем этой должности, чем также всплывающее меню с Edit/удалить открытьсяНеправильное меню опций в определенном положении в списке просмотров

option menu true

wrong option menu

poupup_menu:

<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=".activity.HomeActivity" > 

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

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


</menu> 

popup_menu_user:

<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=".activity.HomeActivity" > 


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

</menu> 

Что я делаю в Listview адаптер для принятия particual позиции:

ListView адаптер:

ivOptionMenu.setOnClickListener(new View.OnClickListener() { 
      @Override 
      public void onClick(View v) { 
       View tempView = (View) v.getTag(R.integer.btnplusview); 
       pos = (Integer) v.getTag(R.integer.btnpluspos); 
       tvPostDetail = (TextView) tempView.findViewById(R.id.tvPostDetail); 
       positionItemFeed = String.valueOf(pos); 
       if (post_user_id.equals(preferenceHelper.getID())) { 

        PopupMenu popup = new PopupMenu(ctx, v); 
        popup.getMenuInflater().inflate(R.menu.poupup_menu, popup.getMenu()); 
        popup.setOnMenuItemClickListener(new PopupMenu.OnMenuItemClickListener() { 
         public boolean onMenuItemClick(MenuItem item) { 
          String menuOption; 
          menuOption = (String) item.getTitle(); 
          if (menuOption.equals("Edit")) { 
           editPost(); 
          } else { 
           delete(); 
          } 
          return true; 
         } 
        }); 

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

          if (menuOption.equals("Spam")) { 
           LayoutInflater li = LayoutInflater.from(ctx); 
           View promptsView = li.inflate(R.layout.prompts, null); 

           AlertDialog.Builder alertDialogBuilder = new AlertDialog.Builder(
             ctx); 
           // set prompts.xml to alertdialog builder 
           alertDialogBuilder.setView(promptsView); 

           final EditText userInput = (EditText) promptsView 
             .findViewById(R.id.editTextDialogUserInput); 

           alertDialogBuilder 
             .setCancelable(false) 
             .setPositiveButton("OK", 
               new DialogInterface.OnClickListener() { 
                public void onClick(DialogInterface dialog, int id) { 
                 // get user input and set it to result 
                 // edit text 
                 reasonSpam = userInput.getText().toString(); 
                 reportSpam(reasonSpam); 
                } 
               }) 
             .setNegativeButton("Cancel", 
               new DialogInterface.OnClickListener() { 
                public void onClick(DialogInterface dialog, int id) { 
                 dialog.cancel(); 
                } 
               }); 
           // create alert dialog 
           AlertDialog alertDialog = alertDialogBuilder.create(); 
           // show it 
           alertDialog.show(); 
          } 
          return true; 
         } 
        }); 
        popup.show();//showing popupuser menu 
       } 
      } 


     }); 

ответ

0

Thing я сравниваю в:

if (post_user_id.equals(preferenceHelper.getID())), здесь есть post_user_id не получает, поэтому меню является не отображается правильно

popup.setOnMenuItemClickListener(new PopupMenu.OnMenuItemClickListener() { 

        @Override 
        public boolean onMenuItemClick(MenuItem item) { 
         switch (item.getItemId()) { 
          case R.id.one: 
           editPost(); 
           return true; 
          case R.id.two: 
           delete(); 
           return true; 
          case R.id.three: 
           /* reasonSpam = userInput.getText().toString(); 
           reportSpam(reasonSpam);*/ 
           return true; 

         } 
         return true; 
        } 
       }); 
       /** Showing the popupuser menu */ 
       popup.show();