TactionbarSherlock - 无法实现列表导航

时间:2013-06-04 16:28:43

标签: android actionbarsherlock

我正在尝试使用ActionbarSherlock示例来添加列表导航。在示例中,有一些代码如下:

@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不在示例中。我应该在布局目录中为它创建一个单独的文件吗?

谢谢!

2 个答案:

答案 0 :(得分:1)

  

但是R.array.locations不在示例中

It sure is

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

答案 1 :(得分:1)

关于编译错误:您是否创建了名为“locations”的数组资源?

/ RES /值/阵列

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

关于为下拉列表提供特殊的“tile”:即使它被称为“List Navigation”,你在Action Bar中实际看到的内容(包括native和ActionBarSherlock)都是一个Spinner。所以你可以给它任何SpinnerAdapter,它会使用它。

如果您不熟悉适配器,我强烈建议您watch this video。 ListView的适配器和Spinner的适配器之间的唯一区别是getDropDownView()方法,该方法创建显示在下拉菜单中的视图(其中getView()提供了微调器内容区域中显示的视图)。 p>