Сценарий: у меня есть ListView, который, когда пользователь щелкает дочерний элемент, устанавливает значение TextView внутри < em>ListView через основное действие.
У меня есть FloatingActionButton, который добавляет и вычитает объект для подсчета количества элементов в ListView.
Чтобы добавить или вычесть количество дочерних элементов, отображаемых ListView, я вызываю notifyDataSetChanged()
.
Я пытаюсь вернуть введенный текст обратно в TextView после вызова notifyDataSetChanged()
Проблема: notifyDataSetChanged()
сбрасывает TextView обратно в пустое состояние после завершения его работы.
Что я пробовал: я пытался сохранить все значения в элементах ListView в отдельном String[] savedItems
и установить текст в TextView. . Я запускаю код шаг за шагом в отладчике и вижу, что код сохраняет текст и фактически устанавливает текст, но по какой-то причине notifyDataSetChanged()
не завершил свою работу.
Как установить текст после завершения notifyDataSetChanged()
?
Код в вопросе:
public void addNewThought(int numberOfThoughts) {
String[] savedDistortionsList = saveDistortions(); // This saves each childs text
selectedItems[numberOfThoughts] = new ArrayList<String>();
IntegerNumberOfThoughts.add(Integer.toString((numberOfThoughts++)) ); // Just the variable that counts the number of children needed in ListView
distortionsAdapter.notifyDataSetChanged(); // Refresh ListView
setBackDistortionsList(savedDistortionsList); // Put back text into ListView
}
saveDistortions()
работает, поэтому я не думаю, что это необходимо показывать, но вот код для setBackDistortionsList()
, который я тестировал, и на самом деле он устанавливает TextView в ListView, но по какой-то причине он просто не отображается.
setBackDistortionsList
private void setBackDistortionsList(String[] savedDistortionsList) {
View tempView;
TextView tempTextView;
for (int i = 0; i < savedDistortionsList.length; i++) {
tempView = LDistortions.getChildAt(i);
tempTextView = (TextView) tempView.findViewById(R.id.textEntry);
tempTextView.setText(savedDistortionsList[i]);
}
}