2017-02-25 20 views
-1

我已经检查了Navigation drawer: How do I set the selected item at startup?的帖子。在该文章中,导航抽屉具有菜单视图,并且我的导航抽屉具有列表视图。如何设置在导航视图中按下的listview第一个元素?

我有一个导航抽屉和一个列表init。每当选择一个项目时,我都会设置我的列表,项目将处于按下状态并突出显示所选列表项目。这个功能运行良好,看起来如下。

activityBinding.list.setOnItemClickListener((parent, view, position, id) -> { 
       parent.getChildAt(position).setPressed(true); 
}); 

我有一个xml,它是在listviev textcolor属性上设置的。该XML看起来像:

<item android:state_pressed="true" 
    android:color="#ffffffff"/> 
<item android:state_focused="true" 
    android:color="#ff0000ff"/> 
<item android:color="#00000000"/> 

但是我想按下设置为默认列表中的第一项,打开抽屉之前。我的问题是:如何获取列表中的项目并将其设置为setOnItemListener的外部?

+0

如果你能发布到目前为止工作过的XML布局和Java代码,否则,这是非常模糊的。 – Anurag

+0

[Navigation drawer:如何在启动时设置选定的项目?](http://stackoverflow.com/questions/31233279/navigation-drawer-how-do-i-set-the-selected-item-在启动时) – Divers

+0

@Divers我已经看到那篇文章,我的导航抽屉里有一个列表,而不是一个菜单。 – XXX

回答

0

activityBinding.list.getChildAt(0).setPressed(true)

但是,你应该使用NavigationView而不是ListView

+0

我试过了,我得到一个空指针异常:尝试在空对象引用上调用虚拟方法'void android.view.View.setPressed(boolean)'。我也遵循:https://developer.android.com/training/implementing-navigation/nav-drawer.html,它在navigationdrawer中有一个列表视图。 – XXX

+0

然后请按照解释那样修复它 - http://stackoverflow.com/questions/218384/what-is-a-nullpointerexception-and-how-doi-i-fix-it。这个问题与你的问题无关。 – Divers

+0

我找到了上面详细介绍的解决方案。谢谢你的帮助。 – XXX

-1

我找到了我的问题的解决方案。

activityBinding.list.getViewTreeObserver().addOnGlobalLayoutListener(new ViewTreeObserver.OnGlobalLayoutListener() { 

      @Override 
      public void onGlobalLayout() { 
       activityBinding.list.getChildAt(0).setPressed(true); 
       activityBinding.list.getViewTreeObserver().removeGlobalOnLayoutListener(this); 
      } 
     }); 
相关问题