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

标签 java android arrays string arraylist

我的 strings.xml 文件中有一个空的字符串数组资源,如下所示:

<string-array name="categories"/>

我正在从 API 获取数据数组,我需要将其填充到 ListView 中。它的 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);

最佳答案

无法在运行时更改字符串数组资源。因此您无法更新它以在 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");

关于java - 以编程方式访问字符串数组资源并为其添加值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/54301811/

相关文章:

java - Netbeans,通过拖放 GUI 设计器创建自定义表模型。

java - 处理 JSP page/customerLogin.jsp 行时发生异常

android - 构建像纽约时报应用程序一样的 Android 状态栏

python - 如何在 pandas 数据框中获取等效的 numpy 数组索引?

python - 如何在 C++ 中创建可迭代的对象列表?

java - 如何使用 Selenium 单击 Compose 部分中的更多选项?

android - 如何使用 ActivityInstrumentationTestCase2 捕获异常?

java - onStart 方法中的 NoClassDefFoundError - Android

arrays - ruby oneliner vs groovy

U 盘上的 Java 软件