2014-01-04 6 views
0

У меня есть несколько строк, и я хочу получить каждую строку в соответствии с числом. Например. У меня есть строки:Как добраться до строк динамически

<string name="ln1">Line1</string> 
<string name="ln2">Line2</string> 
<string name="ln3">Line3</string> 

А вот моя активность:

protected void onCreate(Bundle savedInstanceState) { 
    super.onCreate(savedInstanceState); 
    setContentView(R.layout.activity_main); 
    counter = 2; 
    box = (TextView) findViewById(R.id.textView1); 
    box.setText(R.string.ln1); 
    box.setOnClickListener(this);} 

@Override 
public void onClick(View arg0) { 
    // TODO Auto-generated method stub 
    box.setText(R.string.ln+ counter); 
    counter = counter + 1; 
} 

Прямо сейчас, текст получает отображается как «R.string.ln2», когда я нажимаю TextView. Как настроить TextView для отображения следующей строки (i.e: ln2), когда я нажимаю TextView?

ответ

1

Я думаю, вы будете лучше использовать строковые массивы в файле ресурсов, если вы хотите иметь набор строк Переберите:

<string-array name="somename"> 
    <item>Line1</item> 
    <item>Line2</item> 
    <item>Line3</item> 
</string-array> 

А затем получить доступ к нему в коде:

String[] lines; 
int counter = 0; 

protected void onCreate(Bundle savedInstanceState) { 
    super.onCreate(savedInstanceState); 
    setContentView(R.layout.activity_main); 
    lines = getResources().getStringArray(R.string.somename); 
    box = (TextView) findViewById(R.id.textView1); 
    box.setText(lines[0]); 
    box.setOnClickListener(this);} 

@Override 
public void onClick(View arg0) { 
    counter = counter + 1; 
    box.setText(lines[counter]); 
} 
+1

Высокий. Так просто. Полагаю, я шел по этому пути. Действительно, использование массива намного проще и проще. – SoulSlayerAbad

0

Вы можете ссылаться на <string> метки с помощью: R.string.string_name

Пример:

String lineOne = getResources().getString(R.string.ln1); 

ИЛИ вы можете непосредственно установить строку в TextView или любой другой виджет:

setText(R.string.ln2); 
+0

setText (R.string.ln2); здесь R.string.ln2 вернет int, так что вы не можете использовать выражение пользователя. –

+0

@SanketKachhela Идите и попробуйте. Дайте мне знать, если это не сработает. – JoelFernandes

0

вы можете использовать строковый массив

<string name="ln1">Line1</string> 
<string name="ln2">Line2</string> 
<string name="ln3">Line3</string> 

Java файл

String[] value; 
protected void onCreate(Bundle savedInstanceState) { 
super.onCreate(savedInstanceState); 
setContentView(R.layout.activity_main); 
value[0] = R.string.ln1; 
value[1] = R.string.ln2; 
value[2] = R.string.ln3; 
counter = 0; 
box = (TextView) findViewById(R.id.textView1); 
box.setText(R.string.ln1); 
box.setOnClickListener(this);} 

@Override 
    public void onClick(View arg0) { 
    // TODO Auto-generated method stub 
    box.setText(value[counter]); 
    counter = counter + 1; 
    } 
Смежные вопросы