以编程方式访问字符串数组资源并为其添加值

时间:2019-01-22 05:31:56

标签: java android arrays string arraylist

我的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);

2 个答案:

答案 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");