使用R.array资源的Spinner ArrayAdapter

时间:2016-08-20 22:59:14

标签: android resources spinner android-arrayadapter

final String[] sortText = new String[]{"Date Uploaded", "File Name", "Up-loader", "File Size"};
Spinner sort = (Spinner) v.findViewById(R.id.sort);
sort.setAdapter(new ArrayAdapter<>(context, R.layout.sort_row_layout, R.id.sortTV, sortText));

我遇到的问题是,当我从资源中提取数组时尝试设置适配器时无法创建构造函数,因此我可以实现国际化并使用不同语言显示文本。

<resources>
    <array name="sort">
        <item>Date Uploaded</item>
        <item>File Name</item>
        <item>Up-loader</item>
        <item>File Size</item>
    </array>
</resources>

sort.setAdapter(new ArrayAdapter<>(context, R.layout.sort_row_layout, R.id.sortTV, R.array.sort));

这里的问题是什么?

1 个答案:

答案 0 :(得分:0)

ArrayAdapter没有可以将引用传递给数组资源的构造函数。请参阅docs

您希望使用createFromResource()setDropDownViewResource(),如下所示:

ArrayAdapter<CharSequence> sortAdapter = ArrayAdapter.createFromResource(context, R.array.sort, R.layout.sortTV);
sortAdapter.setDropDownViewResource(R.layout.sort_row_layout);
sort.setAdapter(sortAdapter);

修改

对于标准,系统默认样式Spinner只使用内置布局:

ArrayAdapter<CharSequence> sortAdapter = ArrayAdapter.createFromResource(context, R.array.sort, android.R.layout.simple_spinner_item);
sortAdapter.setDropDownViewResource(android.R.layout.simple_spinner_dropdown_item);
sort.setAdapter(sortAdapter);