我的strings.xml文件中有一个空的字符串数组资源,如下所示:
<string-array name="categories"/>
我正在从API获取数据数组,我需要将其填充到列表视图中。其ArrayAdapter为其资源使用@ArrayResource int
,如下所示:
public void showListViewDialog(…, @ArrayRes int arrayResource) {
...
ListView listView = alertDialogView.findViewById(R.id.listViewCategories);
ArrayAdapter arrayAdapter = ArrayAdapter.createFromResource(context,
arrayResource, R.layout.custom_list_item);
listView.setAdapter(arrayAdapter);
}
在我的Java类中,这就是我检索字符串数组资源的方式:
List<String> categoriesToAdd= Arrays.asList(getResources().getStringArray(R.array.categories));
然后如何将数据添加回去?我已经尝试了以下方法,但是不起作用:
List<String> listCategories = new ArrayList<>();
listCategories.add(categoriesToAdd);
答案 0 :(得分:1)
AFIK,APK
中捆绑的运行时无法更改任何资源文件。您可以做的只是从API提取数据并使用它,如果要保存以备后用,请保存在SharedPreferences
文件中
答案 1 :(得分:0)
在运行时无法更改字符串数组资源。因此,您无法更新它以显示ListView
中的数据。
您不需要字符串数组资源即可创建ArrayAdapter
。相反,您可以简单地将ArrayList
传递给其构造函数以创建它。
例如:
List<String> data = new ArrayList<>();
// sample data
data.add("Data 1");
data.add("Data 2");
final ArrayAdapter<String> adapter = new ArrayAdapter<>(this /*context*/,
android.R.layout.simple_list_item_1, android.R.id.text1, data);
ListView listView = findViewById(R.id.listView);
listView.setAdapter(adapter);
现在,如果要将数据添加到列表中,请使用:
adapter.add("Data 3");