0

Я борюсь с проблемой и читаю почти все темы об этой ситуации, но я не мог найти правильное решение для моего дела. Буду признателен за все предложения. В моем случае я создаю тестовое приложение и записываю результаты в базу данных, чем пытаюсь получить сводку результатов в ListView. Сначала с пустым списком в качестве глобального переменной I инициировать Список_массивыarrayAdapter.add не сохраняет предыдущие объекты

ArrayList<Results> updatedList = new ArrayList<>(); 

чем в onCreateView я инициирую адаптер с пустым списком. У меня есть обычный CustomAdapter.

ProfileArrayAdapter arrayAdapter = new ProfileArrayAdapter (getContext(), 0, updatedList);

И в другом методе я обновляю свой объект новыми данными и добавляю к массиву-адаптеру, но, к сожалению, я пробовал все возможные способы, но только последние значения добавляются в адаптер, а предыдущие удаляются. Я даже использую notifyDataSetChanged. Возможно, цикл for может быть решением, но с увеличением количества элементов это будет проблемой. Пожалуйста, дайте мне несколько советов по этому вопросу.

Results aResults = new Results (testIdString, testTypeString, numberOfCorrectAnswers, numberOfFalseAnswers, numberOfEmptyAnswers); 
    arrayAdapter.add(aResults); 
    arrayAdapter.notifyDataSetChanged(); 

Edit: Решение: Проблема была каждый фрагмент вызывается с помощью TabAdapter для fragmentPager список обновляется. В Tabadapter я изменил новый статистическийфрагмент на

СтатистикаFragment stat = StatisticsFragment.newInstance (StatisticsFragment.updatedList);

Than in FragmentActivity Я использовал putParcelableArrayList для передачи массива в новый фрагмент. Для этого я применил класс Parcelable в своем классе Results. Надеюсь, это решение поможет кому-то другому.

ответ

0

Slm Омер Kardes,

Вы должны добавить новый объект Result aResult в первую очередь к глобальной ArrayList updatedList. После того, как вы добавите это, просто позвоните arrayAdapter.notifyDataSetChanged();.

Он должен любопытное выглядеть следующим образом:

ArrayList<Results> updatedList = new ArrayList<>(); 
ProfileArrayAdapter arrayAdapter; 
... 

public View onCreateView(...){ 
    arrayAdapter = new ProfileArrayAdapter(getContext(), 0, updatedList); 
    ... 
} 

public void updateList (Result newResult){ 
    updatedList.add(newResult); 
    arrayAdapter.notifyDataSetChanged(); 
} 
+0

Спасибо за ответ, но опять же вопрос, насколько я понимаю, в момент начала деятельности, вместо добавления новых данных в ArrayList он создает новый ArrayList и добавьте новые данные в этот список. Поэтому никогда не создаются новые строки. –

+0

Можете ли вы поделиться своим ProfileArrayAdapter с нами PLS? –

+0

Пожалуйста, найдите дополнительный адаптер. –

Смежные вопросы