我有以下代码:
ArrayAdapter<String> mAdapter = new ArrayAdapter<String>(countries2.this,
android.R.layout.simple_list_item_1,
getResources().getStringArray(R.array.Europe));
listView.setOnItemClickListener(new AdapterView.OnItemClickListener() {
@Override
public void onItemClick(AdapterView<?> adapterView, View view, int i, long l) {
Intent intent = new Intent(countries2.this, ListActivity.class);
intent.putExtra("CountryName", listView.getItemAtPosition(i).toString());
startActivity(intent);
}
});
listView.setAdapter(mAdapter);
现在我想将getResources().getStringArray(R.array.Europe)
设置为getStringArray(R.array.stringname)
所以我只想动态设置应用程序应该获得的数组(例如:欧洲,非洲,美国,......)
String stringname = "Europe" //or Africa, USA,...
如何动态设置应该获取的数组?
答案 0 :(得分:1)
您可以使用 getIdentifier
试试这个,
String stringname = "Europe";
int resourceId = getResources().getIdentifier(stringname , "array",
this.packageName);
ArrayAdapter<String> mAdapter = new ArrayAdapter<String>(countries2.this,
android.R.layout.simple_list_item_1,
getResources().getStringArray(resourceId));
答案 1 :(得分:0)
相反传递getStringArray(R.array.Europe)直接在适配器中返回数组,在外面创建String数组引用。并且在用户交互的基础上检查用户选择了什么,并在条件语句中获取字符串数组并引用适配器中的引用传递数组,然后通知适配器。希望能回答这个问题。使用以下代码将代码更改为初始化适配器
String [] array = getResources().getStringArray(R.array.Europe);
ArrayAdapter<String> mAdapter = new ArrayAdapter<String>(countries2.this,
android.R.layout.simple_list_item_1,
array
);
当用户代表该用户交互更改选项时,重新填充数组并通知适配器