Получите доступ к ресурсу строкового массива программно и добавьте к нему ценность - PullRequest
0 голосов
/ 22 января 2019

У меня есть пустой ресурс строкового массива в моем файле 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 голосов
/ 22 января 2019

Невозможно изменить ресурс строкового массива во время выполнения.Поэтому вы не можете обновить его, чтобы отображать данные в 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");
0 голосов
/ 22 января 2019

AFIK, невозможно изменить какие-либо файлы ресурсов во время выполнения, которые включены в APK.Что вы можете сделать, просто получить ваши данные из API и использовать их, и если вы хотите сохранить их для дальнейшего использования, сохраните их в SharedPreferences file

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...