根据列表项更改上下文菜单

时间:2014-01-08 20:38:11

标签: android android-listview contextmenu

假设我有一个存储在数据库中的朋友列表,并显示在我的活动列表中。对于这个列表,我有一个上下文菜单,其中包含“编辑”,“删除”和“坏朋友/好朋友”。 情况是我想根据数据库中的值更改菜单中最后一项(“坏朋友/好朋友”)的文本。 (切换文字)。

如果朋友是好朋友,上下文菜单文本应该是“不是好朋友”,如果朋友是坏朋友,文本应该是“好朋友”。这意味着在上下文菜单中单击此项可以将好友从好到坏切换为好。

有什么建议吗?

1 个答案:

答案 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);
    }
}