Я расширяю ExpandableListView, чтобы создать свой собственный ListView и адаптер обратных вызовов осуществляются следующим образом:ExpandableListView обратных вызовов не синхронизированы
@Override
public int getGroupCount() {
return m_FilteredSites.getSize();
}
@Override
public Object getGroup(int i) {
return m_FilteredSites.get(i);
}
@Override
public View getGroupView(int groupPosition, boolean isExpanded, View convertView, ViewGroup parent) {
SiteEntity site = (SiteEntity) getGroup(groupPosition);
//more code ....
}
Проблема заключается в том, что в периоде между вызовами getGroupCount и getGroupView, тем Коллекция m_FilteredSites может измениться (из-за использования фильтра в моем случае). Есть ли способ обеспечить синхронизацию или любой другой метод, который будет поддерживать соответствие данных между вызовами?
Я не вижу, как поможет синхронизация моего кода. Я не контролирую поток - это системные обратные вызовы. Например, система будет: 1. вызвать getGroupCount и получить номер 3 (конец синхронизатора заканчивается). 2. Теперь я меняю данные в другом синхронизированном блоке, а число элементов меняется на 0. 3. теперь система вызывает getGroupView с номером 2, потому что все еще думает, что количество элементов - 3. стрела. – galbarm