listview Popupmenu显示错误值
问题描述:
我试图显示listview的项目名称,当其popup菜单被点击,但我有麻烦,因为它总是显示或返回“false”值。任何想法如何解决这个问题?感谢listview Popupmenu显示错误值
public void toast(View v){
showPopupMenu(v);
}
private void showPopupMenu(View v){
PopupMenu pop = new PopupMenu(CompanyActivity.this, v);
pop.getMenuInflater().inflate(R.menu.menu,pop.getMenu());
pop.setOnMenuItemClickListener(new PopupMenu.OnMenuItemClickListener() {
@Override
public boolean onMenuItemClick(MenuItem item) {
if(item.getItemId() == R.id.view){
Toast.makeText(getApplicationContext(),item.getItemId(),Toast.LENGTH_SHORT)
.show();
return true;
}
return false;
}
});
pop.show();
}
编辑:我想被点击的列表视图列表项的值,但它表明,被点击的菜单项。
public void toast(View v){
showPopupMenu(v);
}
private void showPopupMenu(View v){
PopupMenu pop = new PopupMenu(CompanyActivity.this, v);
pop.getMenuInflater().inflate(R.menu.menu,pop.getMenu());
pop.setOnMenuItemClickListener(new PopupMenu.OnMenuItemClickListener() {
@Override
public boolean onMenuItemClick(MenuItem item) {
Toast.makeText(CompanyActivity.this,"text: "+item.getTitle(),Toast.LENGTH_SHORT).show();
return true;
}
});
pop.show();
}
答
ListView项的“名称”完全取决于您用于ListView的适配器。请记住,菜单项ID与列表视图ID无关,该ID与适配器项ID无关。为了让弹出菜单知道哪个项目被点击了,您需要使用列表项位置从适配器中查找它。它会这样工作:
@Override
public void onItemClick(AdapterView<?> parent, View view, int position, long id) {
showPopupMenu(view, position);
}
private void showPopupMenu(View anchor, final int position) {
PopupMenu popupMenu = new PopupMenu(
this,
anchor);
popupMenu.inflate(R.menu.menu);
popupMenu.setOnMenuItemClickListener(new PopupMenu.OnMenuItemClickListener() {
@Override
public boolean onMenuItemClick(MenuItem item) {
// Depending on what type of object backs your adapter, you may have
// to do something different here.
String title = String.valueOf(mListView.getAdapter().getItem(position));
Toast.makeText(MyActivity.this, "text: " + title, Toast.LENGTH_SHORT).show();
return true;
}
});
popupMenu.show();
}
为什么你这样做“item.getItemId()== R.id.view”? – BlaShadow 2014-09-25 20:58:37
即时消息检查项目点击是否等于我的menu.xml中的项目,我做对了吗? – Jonathan 2014-09-25 21:00:16
如果你创建一个上下文菜单,你可能做错了什么,但试着看看这个http://developer.android.com/guide/topics/ui/menus.html#context-menu – BlaShadow 2014-09-25 21:05:33