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

标签 android android-listview contextmenu

假设我有一个 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/

相关文章:

jquery 小程序上的右键单击上下文菜单

android - Firebase 在滚动时动态加载数据

android - 无法从 Android 中的 SharedPreferences 访问字符串

java - 安卓.view.InflateException : Binary XML file: Error inflating class

android - 使用自定义适配器删除 ListView 行之间的间距

windows - 如何在自动热键中使用菜单窗口键?

java - Android/Java 长数学有时会相差一个小小数

android - ListView 一次只显示一行

android - 使用按钮更改 listView 上的文本颜色

wpf - 命令绑定(bind)在动态 MVVM 上下文菜单中不起作用