#c# #android #listview #xamarin
#c# #Android #listview #xamarin
Вопрос:
Я относительно новичок в xamarin. Я использую пользовательский адаптер listview. Я долго думал об этой ошибке.. Я пытаюсь показать другой обновленный список в моем listview. щелчок по первому элементу (любому из 3 элементов) работает нормально.. но моя проблема заключается в том, что после нажатия на 2-й элемент (который может быть ShowAllLuzon или ShowAllMindanao). Похоже, он не обновляет / не обновляет мой listview, и мои элементы в моем listview исчезают. Я видел о InvalidateViews в java и попробовал InvalidateOptionMenu(); но, похоже, он не работает должным образом .. или я использую его неправильно? должен ли я добавить его в свой метод обновления customadapter?
мой код на панели действий
else if (id == Resource.Id.ShowAllLuzon) //show LUZON
{
List<Mountain> filteredMountains = (from mountain in mMountains
where mountain.Island == 1
orderby mountain.MtName
select mountain).ToList();
mAdapter.Update(filteredMountains);
RunOnUiThread(() => mAdapter.NotifyDataSetChanged());
}
else if (id == Resource.Id.ShowAllVisayas) //show Visayas
{
List<Mountain> filteredMountains = (from mountain in mMountains
where mountain.Island == 2
orderby mountain.MtName
select mountain).ToList();
mAdapter.Update(filteredMountains);
RunOnUiThread(() => mAdapter.NotifyDataSetChanged());
}
else if (id == Resource.Id.ShowAllMindanao) //show Mindanao
{
List<Mountain> filteredMountains = (from mountain in mMountains
where mountain.Island == 3
orderby mountain.MtName
select mountain).ToList();
mAdapter.Update(filteredMountains);
InvalidateOptionsMenu(); //where I added InvalidateOptionsMenu
RunOnUiThread(() => mAdapter.NotifyDataSetChanged());
}
Я также попытался изменить свой метод обновления в моем пользовательском адаптере..
вот мой метод обновления в моем пользовательском адаптере..
public void Update(List<Mountain> mLists)
{
mtList.Clear();
mtList.AddRange(mLists);
NotifyDataSetChanged();
}
работал над этим почти 3 часа.. пожалуйста, любые ответы были бы очень признательны..
Комментарии:
1. К какому классу
Update(..)
принадлежит? Вы пробовали вызыватьnotifyDataSetChanged()
mAdapter
?2. мой класс обновления принадлежит моему пользовательскому адаптеру.. Да, я пробовал .. но когда я нажимаю на второй элемент, кажется, что мой метод пытается найти его в моем текущем списке.. итак, как я могу обновить его перед вызовом метода?
3. Вы позвонили
notifyDataSetChanged
дважды. Один вUpdate()
методе, а другой сразу после вызоваUpdate()
метода. Я предлагаю либо вызвать его один раз внутриUpdate()
, либо снаружиif-then
структуры.4. пробовал удалить, не получилось: (