notifyDatasetchanged не работает для ArrayAdapter

Я пытаюсь реализовать 2 AutoCompleteTextView. Первый содержит значение, при щелчке одного из них данные будут заполнены во втором AutoCompleteTextView, все работает, и данные загружаются правильно, однако, когда я пытаюсь вызвать notifyDataSetChanged на втором адаптере, который заполняет второе поле, которое не изменяется.

Я также написал этот фрагмент кода внутри обработчика, однако, похоже, он тоже не работает.

branchAdapter = new ArrayAdapter(this,android.R.layout.simple_list_item_1,branchNames);
et7.setAdapter(branchAdapter);//et7 is the AutoCompleteTextView //branchname is the ArrayList

в каком-то методе я очищаю ArrayList и добавляю в него новые данные, а затем вызываю notifyDataSetChanged, как показано ниже.

Handler handler = new Handler(Looper.getMainLooper());
  handler.post(new Runnable() {
     @Override
     public void run() {
         branchAdapter.notifyDataSetChanged();
     }
  });

Который не обновляет список. Каким должен быть правильный способ обновления данных?


comment
Вы изменяете ArrayList через адаптер или через свой собственный внешний список (например, branchNames)? Можете ли вы показать эту часть кода?   -  person Jay Soyer    schedule 09.09.2014


Ответы (2)


Вместо этого попробуйте сбросить список.

             ListView lv = (ListView)findViewById(R.id.lv);
             ArrayAdapter adapter = new ArrayAdapter(/*with all parameters*/);
             lv.setAdapter(adapter);
person user3516009    schedule 12.09.2014

@Сати, кажется, я немного опоздала на вечеринку. Я отвечаю, имея в виду, что это может помочь кому-то в будущем. Также очистите адаптер, используя метод branchAdapter.clear(). Затем добавьте новые элементы в адаптер, используя метод branchAdapter.addAll(String... items). Теперь вызовите метод branchAdapter.notifyDataSetChanged(). Это сработает.

person Sohail    schedule 08.08.2018