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