У меня есть ExpandableListView и ExpandableListAdapter.Когда я вызываю notifyDataSetChanged()
в моем адаптере, данные не обновляются, пока я не сверну, а затем не разверну группу.Вот рассматриваемый код.
Во-первых, моя деятельность (соответствующие части)
public class HomeActivity extends ExpandableListActivity {
Построение адаптера и списка
homeList = (ExpandableListView)this.findViewById(android.R.id.list);
homeAdapter = new ExpandableHomeAdapter(this, profile.Statements, getItems(itemCount));
homeList.setAdapter(homeAdapter);
homeList.setIndicatorBounds(0,0);
homeList.setOnChildClickListener(this);
homeList.expandGroup(0);
homeList.expandGroup(1);
В этом упражнении яиметь событие, для которого зарегистрировано действие, которое позволяет ему узнать, что данные модели (хранящиеся в контроллере приложения) изменились.Вот это событие.
private DataChangedListener dataChanged = new DataChangedListener() {
@Override
public void dataChanged(DataChangedEvent event, ChangeModel changes) {
profile = Controller.getProfile();
for (int x = 0; x < changes.NewItems.length; x++) {
homeAdapter.insertItem(changes.NewItems[x], x);
}
for (int x = 0; x < changes.NewStatements.length; x++) {
homeAdapter.insertStatement(changes.NewStatements[x], x);
}
}
};
А потом мой адаптер
public class ExpandableHomeAdapter extends BaseExpandableListAdapter {
Метод вставки
public void insertItem(ItemSummary item, int index) {
items.add(index, item);
this.notifyDataSetChanged();
}
Этот же подход с использованием notifyDataSetChanged()
сработалкогда я использовал несколько ArrayAdapter
с.Однако теперь, когда все работает и данные фактически изменены, экран не обновляется новыми данными, пока я (вручную) не сверну, а затем не разверну группу.Я не пробовал программно свернуть / развернуть, но я бы хотел сохранить это как последнее средство.Как получить представление для обновления при изменении данных?