2013-06-04 22 views
-1

我想從ActionbarSherlock示例中添加列表導航。在這個例子中,有一些這樣的代碼:TactionbarSherlock - 實施列表導航時遇到問題

@Override 
public void onCreate(Bundle savedInstanceState) { 
    setTheme(SampleList.THEME); //Used for theme switching in samples 
    super.onCreate(savedInstanceState); 

    setContentView(R.layout.list_navigation); 
    mSelected = (TextView)findViewById(R.id.text); 

    mLocations = getResources().getStringArray(R.array.locations); 

    Context context = getSupportActionBar().getThemedContext(); 
    ArrayAdapter<CharSequence> list = ArrayAdapter.createFromResource(context, R.array.locations, R.layout.sherlock_spinner_item); 
    list.setDropDownViewResource(R.layout.sherlock_spinner_dropdown_item); 

    getSupportActionBar().setNavigationMode(ActionBar.NAVIGATION_MODE_LIST); 
    getSupportActionBar().setListNavigationCallbacks(list, this); 
} 

這似乎是它。所以我很困惑我可以在哪裏添加導航標題。它還引用

ArrayAdapter<CharSequence> list = ArrayAdapter.createFromResource(
      context, R.array.locations, R.layout.sherlock_spinner_item); 

和我的代碼不知道R.array.locations並給出語法錯誤。但是這個R.array.locations不在這個例子中。我應該在佈局目錄中爲它創建一個單獨的文件嗎?

謝謝!

回答

1

關於您的編譯錯誤:您是否創建了一個名爲「locations」的數組資源?

/RES /價值/陣列

<resources> 
    <string-array name="locations"> 
     <item>Foo</item> 
     <item>Bar</item> 
     <item>Baz</item> 
    </string-array> 
</resources> 

關於爲下拉列表提供特殊的「磚」:即使它被稱爲「列表導航」,你在操作欄實際看到(無論是本地一個和ActionBarSherlock的)是一個微調。所以你可以給它任何SpinnerAdapter,它會使用它。

如果你不熟悉適配器,我強烈建議你watch this video。 ListView的適配器和Spinner的適配器的唯一區別是getDropDownView()方法,該方法創建顯示在下拉菜單中的視圖(其中getView()提供了在微調器內容區域中顯示的視圖)。

1

But that R.array.locations is not in the examples

It sure is

<string-array name="locations"> 
    <item>Home</item> 
    <item>Email</item> 
    <item>Calendar</item> 
    <item>Browser</item> 
    <item>Clock</item> 
</string-array>