Я не уверен, насколько это кому-нибудь поможет, но в моем случае это работает нормально.
У меня есть класс ViewModel, который хранит все данные, которые я обновляю в приложении, и запускаю действие «Обновление коллекции» при изменении коллекции.
// All within ViewModel.cs
private Action SearchResultsUpdated;
private List<SearchResult> m_oSearchResults;
Public List<SearchResult> SearchResults
{
get
{
if (m_oSearchResults == null)
m_oSearchResults = new List<SearchResult> ();
return m_oSearchResults;
}
set
{
if (value != m_oSearchResults)
{
m_oSearchResults = value;
//
// Fire update event
if (SearchResultsUpdated != null)
SearchResultsUpdated ();
}
}
}
Затем я добавляю обработчик для этого события в классе адаптера.
// All within SearchResultsAdapter.cs
public class SearchResultsAdapter : BaseAdapter<SearchResult>
{
.
.
// Constructor
public SearchResultsAdapter (Activity oContext)
: base ()
{
// Add handler for list refresh
ViewModel.SearchResultsUpdated += NotifyDataSetChanged;
//
m_oContext = oContext;
}
}
Внутри адаптера я использую коллекцию ViewModel.SearchResults в качестве контекста данных для представления списка. Надеюсь, что это помогает и достаточно тщательно, чтобы все могли понять.