Итак, у меня есть два счетчика, давайте назовем первый счетчик Parent (account_type_spinner) и второй счетчик Child (account_name_spinner).Обратите внимание, что в следующем коде инициализация ArrayAdapter для дочернего элемента (account_name_spinner), я передаю ему массив строк с именами учетных записей, которые я ранее запрашивал перед следующими строками кода (account_name_array):родительский счетчик запускает мой «SpinnerSelectionListener», который просто является моим классом, реализующим OnItemSelectedListener.Этот класс запускается, очевидно, каждый раз, когда выбор делается в спиннере Parent, и код выглядит следующим образом:
public class SpinnerSelectionListener implements OnItemSelectedListener {
public void onItemSelected(AdapterView<?> parent,
View view, int pos, long id) {
String spinner_selection = parent.getItemAtPosition(pos).toString();
if(spinner_selection.contentEquals(INCOME)) {
//---grab Income type accounts from db and build array---
db.open();
account_name_array = db.getAccounts(INCOME);
account_name_adapter.notifyDataSetChanged();
dr_amount_textview.setVisibility(View.GONE);
dr_amount.setVisibility(View.GONE);
cr_amount_textview.setVisibility(View.VISIBLE);
cr_amount.setVisibility(View.VISIBLE);
db.close();
} else {
//---grab Expense type accounts from db and build array---
db.open();
account_name_array = db.getAccounts(EXPENSE);
account_name_adapter.notifyDataSetChanged();
cr_amount_textview.setVisibility(View.GONE);
cr_amount.setVisibility(View.GONE);
dr_amount_textview.setVisibility(View.VISIBLE);
dr_amount.setVisibility(View.VISIBLE);
db.close();
}
}
public void onNothingSelected(AdapterView<?> parent) {
// Do nothing.
}
}
Приведенный выше код должен обновлять Child (account_name_spinner) учетными записями INCOME или EXPENSE при каждом выборе Parentизменяется с ДОХОДА на РАСХОД или наоборот (это приложение для учета).Обновление списка счетчиков Child должно быть облегчено с помощью "account_name_adapter.notifyDataSetChanged ();"однако ничего не происходит.
Я рассмотрел эту проблему далее в StackOverflow и обнаружил, что должен обновить элементы .clear () или .remove () из ArrayAdapter моего ребенка (account_name_adapter), прежде чем список обновится, однако, когдаЯ пытаюсь "account_name_adapter.clear ();"перед уведомлением ArrayAdapter я получаю сообщение об ошибке, что операция недопустима.Есть идеи, что я делаю не так?