假设我有一个存储在数据库中的朋友列表,并显示在我的活动列表中。对于这个列表,我有一个上下文菜单,其中包含“编辑”,“删除”和“坏朋友/好朋友”。 情况是我想根据数据库中的值更改菜单中最后一项(“坏朋友/好朋友”)的文本。 (切换文字)。
如果朋友是好朋友,上下文菜单文本应该是“不是好朋友”,如果朋友是坏朋友,文本应该是“好朋友”。这意味着在上下文菜单中单击此项可以将好友从好到坏切换为好。
有什么建议吗?
答案 0 :(得分:2)
我使用这种方法。
声明两个活动字段:
private int listItemPressedPos;
private long listItemPressedId;
声明onItemLongClick
事件并使用它们来保存listItem的位置和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);
}
}