NavigationView,一种取消选中先前选择的方法?

Posted

技术标签:

【中文标题】NavigationView,一种取消选中先前选择的方法?【英文标题】:NavigationView, a way to uncheck previous selections? 【发布时间】:2016-05-26 08:12:29 【问题描述】:

昨天我按照 2 个教程为我的抽屉实现了 NavigationView 组件,而不是使用 ListView。由于它更智能,我想知道是否有一种集成方式来跟踪选择了哪个项目,当你选择一个新项目时,旧的选择会被删除?

或者我们应该实现那个逻辑?我是否应该只保留 2 个带有所选元素 ID 的整数,一个 oldSelection 和一个 newSelection 并取消选中旧的?

欢迎提出建议,谢谢!

教程:

http://www.viralandroid.com/2015/08/android-navigation-drawer-view.html https://github.com/codepath/android_guides/wiki/Fragment-Navigation-Drawer

【问题讨论】:

您是否使用自定义列表视图来显示菜单列表? 正如我在问题中解释的那样,我使用的是 NavigationView,而不是 ListView 【参考方案1】:

NavigationView 为您执行此操作,每当您选择新项目时,旧项目将被删除并选择新项目。

注意:

如果你添加任何子菜单,这对子菜单不起作用

【讨论】:

谢谢!这正是正在发生的事情,我的子菜单正在从 NavigationView 接收此功能。所以现在(可能他们会解决这个问题)我们为子菜单实现我们自己的逻辑。 @iBobb 你用什么逻辑取消选中子菜单?我遇到了类似的情况。【参考方案2】:

尝试添加“menuItem.setChecked(true);”在“setNavigationItemSelectedListener”中:

navigationView.setNavigationItemSelectedListener(
                new NavigationView.OnNavigationItemSelectedListener() 
                    @Override
                    public boolean onNavigationItemSelected(MenuItem menuItem) 

                        displayView(menuItem);

                        menuItem.setChecked(true);
                        drawerLayout.closeDrawers();
                        return true;
                    
                );

【讨论】:

我已经这样做了,但是谢谢。问题是我有一个子菜单。

以上是关于NavigationView,一种取消选中先前选择的方法?的主要内容,如果未能解决你的问题,请参考以下文章

使用SwitchMap()处理取消先前的请求

Cocoa NSOutlineView 取消选择先前的选择

如何以编程方式(VS 6)取消突出显示 MFC CListCtrl 中先前选择的行?

如果 UIButton 被选中,在 Swift (Xcode 9) 中取消选择另一个 UIButton

UIPickerView 不会立即重绘未选中的行

在每个单元格都包含表格视图的表格视图中选择新单元格时,无法取消选择先前选择的单元格