假设我有一个 friend 列表存储在数据库中并显示在我的 Activity 列表中。对于这个列表,我有一个上下文菜单,其中包含“编辑”、“删除”和“坏 friend /好 friend ”。 案例是我想根据数据库中的值更改菜单中最后一项的文本(“坏 friend /好 friend ”)。 (切换文本)。
如果 friend 是好 friend ,上下文菜单文本应该是“不是好 friend ”,如果 friend 是坏 friend ,文本应该是“好 friend ”。这意味着单击上下文菜单中的此项可将 friend 从好变为坏或从坏变为好。
有什么建议吗?
最佳答案
我使用这种方法。
声明两个 Activity 字段:
private int listItemPressedPos;
private long listItemPressedId;
声明一个 onItemLongClick
事件并使用它们保存被点击的列表项的位置和 id
myList.setOnItemLongClickListener(new OnItemLongClickListener() {
@Override
public boolean onItemLongClick(AdapterView<?> adapter, View v, int pos, long id) {
listItemPressedPos = pos;
listItemPressedId = id;
return false;
}
});
在 onCreateContextMenu 方法中,通过 Id 从数据库中获取行并相应地更改菜单。
@Override
public void onCreateContextMenu(ContextMenu menu, View v, ContextMenuInfo menuInfo) {
super.onCreateContextMenu(menu, v, menuInfo);
MenuInflater inflater = getMenuInflater();
inflater.inflate(R.menu.dispositivos_list_context, menu);
//Change this part accordingly your needs
if(tbDispositivos.isSelected(listItemPressedId)){//get value from database
//Alter the menuItem
menu.findItem(R.id.dispositivosContextItemDelete).setVisible(false);
}
}
关于android - 根据列表项更改上下文菜单文本,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21006007/