2017-02-25 40 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); 
      } 
     }); 
相關問題