2012-10-13 3 views
2

У меня есть около 70 строк, которые я хотел бы добавить в String Array .. Затем напечатайте массив String в TextView.Добавить несколько строк в ListArray?

У меня есть домашнее задание, и я думаю, что на самом деле хочу добавить строки в ListArray.

Строки расположены в файле string.xml.

TextView tvHerb = (TextView) findViewById(R.id.tvHerb); 

    ArrayList<String> herbList = new ArrayList<String>(); 
    herbList.add(R.string.angelica, null); 
    herbList.add(R.string.anise_seed, null); 

    tvHerb.setText(herbList.toString()); 

Я получаю ошибку времени выполнения, как только макет отображается на эмуляторе.

Я ПОТЕРЯЛ !!! Я также новичок в программировании на Android, поэтому любая помощь вообще будет оценена по достоинству.

ответ

1

Чтобы получить ресурсы строки, вам необходимо использовать context.getString(id).

Также есть причина, по которой вы используете версию с 2 аргументами .add?

Вы, вероятно, хотите herbList.add(context.getString(R.string.angelica));

0

Вместо того, чтобы каждая строка с идентификатором в string.xml файле. Вы можете объявить массив строк в string.xml

`<resources> 
    <string-array name="sample"> 
    <item>YourValue1</item> 
    <item>YourValue2</item> 
    ..... 
    <item>YourValue70</item> 
    </string-array> 
    </resources>` 

Тогда в вашей деятельности

`String[] sample = getResources().getStringArray(R.array.sample); 
    ArrayList<String> arrayList = new ArrayList<String>(sample.length); 
    arrayList = Arrays.asList(sample);` 
+0

Я хотел бы раздельные строки, так что я могу назвать строку в другом месте в приложении .. вместо того, чтобы знать положение я могу назвать herb1 $ herb2 $ (извините синтаксис) – user1742596

0

Сначала я согласен с ответом Agreco по поводу количества атрибутов.

Но также, если вы добавляете в свой arraylist только строки, которые исходят от вас, я считаю, что было бы лучше определить массив String непосредственно в файле strings.xml.

Однако, я думаю, ваша проблема связана с тем, что вы применяете toString к ArrayList. toString - общий метод, и я не уверен в его поведении с массивом. toString не обязательно соответствует вашим конкретным потребностям, и большую часть времени это не так.

Я думаю, что вам лучше сделать что-то вроде:

String stringToInsert =herbList.get(0); 

    for (int i=1;i<herbList.size();i++) 
    { 
     stringToInsert+="ANY_SEPARATOR_YOU_WANT" + herbList.get(i); 
    } 

    tvHerb.setText(stringToInsert); 
+0

разделитель, я не думал, что это может быть новая строка .. поэтому я изменил его из TextView в ListView .. Я работаю над тем, как получить текст в listView ListView.setText не существует ... – user1742596

+0

ListView и TextView совершенно разные (найдите время, чтобы прочитать это перед использованием ListView: http://developer.android.com/guide/topics/ui/layout/listview.html) Относительно th e, вы можете использовать «\ n», чтобы перейти к новой строке. –

Смежные вопросы