Как назначить stringid (динамический), используя strings.xml - PullRequest
0 голосов
/ 21 марта 2012

как мне назначить динамику stringid, я создал номер строкового поля в файле strings.xml.

strings.xml

<string name="read_more_0">defautl message</string> 
<string name="read_more_1">first messages.</string> 
<string name="read_more_2">second messages.</string> 
<string name="read_more_3">third messages.</string> 

простое действие:

 public class dynamic_Activity extends Activity {
       @Override
       public void onCreate(Bundle savedInstanceState) {
           super.onCreate(savedInstanceState);

           setContentView(R.layout.dynamic_layout_01);

          txtDisplay = (TextView) findViewById(R.id.textView1);  

          //getting position value from the previous activity
          int position = getIntent().getIntExtra("position", default_value); 

          if (position > 0)
          {  
          String _format = "read_more_" + String.valueOf(position);
          txtDisplay.setText(R.string._format); // how to assign the string id?

          } else {
          txtDisplay.setText(R.string.read_more_0); //by default
          }  
       }
    }

файл макета:

<LinearLayout
        android:id="@+id/linearLayout1"
        android:layout_width="match_parent"
        android:layout_height="fill_parent"
        android:orientation="vertical" >

        <TextView
            android:id="@+id/textView1"
            android:layout_width="fill_parent"
            android:layout_height="fill_parent"
            android:text="@string/dynamic_0" 
            android:textSize="12dp" />
    </LinearLayout>

Ответы [ 3 ]

2 голосов
/ 21 марта 2012

В данном конкретном случае, я думаю, вам следует изучить использование строкового массива .

1 голос
/ 21 марта 2012

Два способа сделать это:

1) Объявите оператор map или switch в вашем классе, который связывает позиции с идентификаторами ресурсов. Это даст лучшую производительность.

2) Если вы должны получить ресурс из динамической строки, вы можете использовать метод getIdentifier . Обратите внимание, что производительность не велика.

Resources resources = getResources();
int id = resources.getIdentifier("read_more_" + String.valueOf(position), "string", getPackageName());
String str = resources.getString(id);
0 голосов
/ 21 марта 2012

Ты не можешь.Do

switch (position) {
case 0: txtDisplay.setText(R.string.read_more_0); break;
case 1: txtDisplay.setText(R.string.read_more_1); break;
// and so forth...
}
...