字符串数组错误

时间:2014-03-16 10:21:45

标签: android arrays string listview

告诉我如何实现这个例子,在List视图中理解,在字符串中:

<string name="ml350">300</string>
<string name="ml400">400</string>
<string name="ml600">600</string>
<string name="ml800">800</string>
<string name="ml1000">1000</string>

public static final String[] descriptions = new String[] {
        "300",
        "400", "600",
        "800","1000" };

ListView listView;
List<RowItem> rowItems;

    rowItems = new ArrayList<RowItem>();
    for (int i = 0; i < descriptions.length; i++) {
        //RowItem item = new RowItem(images[i], titles[i], descriptions[i]);
        RowItem item = new RowItem(R.drawable.ic_untitled_2, descriptions[i], descriptions[i]);
        rowItems.add(item);
    }

    listView = (ListView) findViewById(R.id.list);
    CustomListViewAdapter adapter = new CustomListViewAdapter(this,
            R.layout.listview_item_row, rowItems);
    listView.setAdapter(adapter);
    listView.setOnItemClickListener(this);
问题是当我尝试替换时:

public static final String[] descriptions = new String[] {
        R.strings.300,
       R.strings.400, R.strings.600,
        R.strings.800,R.strings.1000 };

我收到错误。

3 个答案:

答案 0 :(得分:1)

你必须使用:

R.strings.ml350,
R.strings.ml400,
R.strings.ml600,
R.strings.ml800,
R.strings.ml1000

而不是:

R.strings.300,
R.strings.400,
R.strings.600,
R.strings.800,
R.strings.1000 

你需要:

 getResources().getString("your key");

首先:

300的值为ml350,因此您需要键才能访问该值。

第二:

R.string.Key返回String的id但您需要String的值,因此您必须使用getResources().getString()方法访问

更好的方法是创建一个数组并在您的活动中调用它。

<强> //修改

所以你的代码必须像:

public static final String[] descriptions = new String[] {
        getResources().getString(R.strings.ml350),
        getResources().getString(R.strings.ml400),
        getResources().getString(R.strings.m1600),
        getResources().getString(R.strings.ml800,
        getResources().getString(R.strings.m11000) };

并且您必须在初始化视图后调用此方法,因为这需要布局的上下文,因此如果您在onCreate()之前调用,则 NPE

答案 1 :(得分:1)

<string-array name="system">
   <item>300</item>
   <item>400</item>
   <item>600</item>
   <item>800</item>
   <item>1000</item>
</string-array>

您可以在xml中创建一个数组,然后调用

 String[] descriptions  = getResources().getStringArray(R.array.your_string_array) //in example is system

答案 2 :(得分:0)

R.strings.300返回int类型,但您的数组需要字符串类型,这就是您收到错误的原因。