我已经实现了一个带有两个按钮的自定义上下文操作栏:一个用于从列表视图中删除所选项目,另一个用于编辑所选项目。我想要做的是在选择了两个或更多项目时使editButton不可见。我尝试这样做但没有任何反应:
public void OnItemCheckedStateChanged (ActionMode mode, int position, long id, bool check)
{
SetSubtitle (mode);
if (listview.CheckedItemCount > 1) {
disableButtonFlag = true;
} else
disableButtonFlag = false;
self.InvalidateOptionsMenu();
}
public bool OnCreateActionMode (ActionMode mode, IMenu menu)
{
self.MenuInflater.Inflate (Resource.Menu.CAB_menu, menu);
if (disableButtonFlag) {
menu.FindItem(Resource.Id.action_edit).SetVisible(false);
} else {
menu.FindItem(Resource.Id.action_edit).SetVisible(true);
}
mode.Title = "Select Items";
SetSubtitle (mode);
return true;
}
答案 0 :(得分:0)
这是处理多个项目对我有用的方法:
private void listView_SelectedIndexChanged(object sender, EventArgs e)
{
if(listView.SelectedIndices.Count > 1)
{
MessageBox.Show("Multiple rows selected!");
}
}
如果选择了索引更改,请检查检查的索引数。如果超过1(=多个),请激活您的代码。
答案 1 :(得分:0)
最后我发现了自己的错误!这不是宣布:
if (listview.CheckedItemCount > 1) {
disableButtonFlag = true;
} else
disableButtonFlag = false;
在我的OnCreateActionMode
方法中并在Activity.InvalidateOptionsMenu()
方法中调用OnItemCheckedStateChanged()
我应该在OnPrepareActionMode()
方法中声明这些行,然后在ActionMode.Invalidate()
内调用OnItemCheckedStateChanged()
{{1}}方法。