自定义ListView无法从列表中删除项
我有两个自定义listView,如listView A和listView B。在listView A上,当我在listView A中单击项目时,它将在特定项目上突出显示(即选中和取消选中),数据将填充到listView B中,它工作正常。但当我从ListView A中取消选中项,并以类似的方式尝试从ListView B中删除该项时,它就不起作用了 使用复选框从自定义列表视图中删除项目时,不从列表视图中删除项目。但我可以添加该项目,但无法删除 在我尝试从列表中添加或删除项目的特定条件下,ListView控件的OnItemAP事件自定义ListView无法从列表中删除项,listview,xamarin.forms,listviewitem,Listview,Xamarin.forms,Listviewitem,我有两个自定义listView,如listView A和listView B。在listView A上,当我在listView A中单击项目时,它将在特定项目上突出显示(即选中和取消选中),数据将填充到listView B中,它工作正常。但当我从ListView A中取消选中项,并以类似的方式尝试从ListView B中删除该项时,它就不起作用了 使用复选框从自定义列表视图中删除项目时,不从列表视图中删除项目。但我可以添加该项目,但无法删除 在我尝试从列表中添加或删除项目的特定条件下,ListV
public class TestIds
{
ObservableCollection<ListViewModel> ListItems { get; set; } = new ObservableCollection<ListViewModel>()
{
};
private void ListView_ItemTappedEventArgs(ItemTappedEventArgs itemTapped)
{
items = itemTapped.Item as ListViewModel;
if (items.IsSelected)
{
items.IsSelected = false;
BindRemoveItem(items.ID, items.IsSelected);
}
else
{
items.IsSelected = true;
BindRemoveItem(items.ID, items.IsSelected);
}
}
//this is my code for binding and removing data from listView
private void BindRemoveItem(string id, bool isChecked)
{
IDManager.GetIDList(list =>
{
foreach (IDEntities item in list)
{
if (isChecked == true)
{
ListItems.Add(new ListViewModel { Text = item.IDDescription + " (" + item.IDCodes + ")", ID = item.IDCodeID });
}
else
{
ListItems.Remove(new ListViewModel { Text = item.IDDescription + " (" + item.IDCodes + ")", ID = item.IDCodeID };
}
}
CustomControlClass.ListView.ItemsSource = ListItems;
}, id);
}
}
公共类测试
{
ObservableCollection ListItems{get;set;}=new ObservableCollection()
{
};
私有无效列表视图_ItemTappedEventArgs(ItemTappedEventArgs itemtaped)
{
items=itemTapped.Itemas ListViewModel;
如果(项目.已选定)
{
items.IsSelected=false;
BindRemoveItem(items.ID,items.IsSelected);
}
其他的
{
items.IsSelected=true;
BindRemoveItem(items.ID,items.IsSelected);
}
}
//这是我用于绑定和从listView中删除数据的代码
私有void bindremovietem(字符串id,布尔值已检查)
{
IDManager.GetIDList(列表=>
{
foreach(列表中的标识项)
{
如果(isChecked==true)
{
添加(新ListViewModel{Text=item.IDDescription+”(“+item.IDCodes+”),ID=item.IDCodeID});
}
其他的
{
移除(新ListViewModel{Text=item.IDDescription+”(“+item.IDCodes+”),ID=item.IDCodeID};
}
}
CustomControlClass.ListView.ItemsSource=ListItems;
},id);
}
}
此处
ListItems。删除
我无法从listview中删除项目。我想我已经找到了问题所在,尽管我不确定是否正确理解了您的问题
您正在尝试删除此处的新对象
ListItems.Remove(new ListViewModel { Text = item.IDDescription + " (" + item.IDCodes + ")", ID = item.IDCodeID };
比较是通过引用进行的,最终没有任何内容被删除
相反,你应该这样做
ListItems.Remove(ListItems.FirstOrDefault(i => i.ID == item.IDCodeID))
这是假设IDCODEID是对象的唯一标识符,如果不是,那么你应该考虑其他方法来获取对要删除的对象的引用
我想我已经发现了这个问题,虽然我不确定是否正确地理解了你的问题。 您正在尝试删除此处的新对象ListItems.Remove(new ListViewModel { Text = item.IDDescription + " (" + item.IDCodes + ")", ID = item.IDCodeID };
比较是通过引用进行的,最终没有任何内容被删除
相反,你应该这样做
ListItems.Remove(ListItems.FirstOrDefault(i => i.ID == item.IDCodeID))
这是假设IDCODEID是对象的唯一标识符,如果不是,那么您应该考虑其他方法来获取对要删除的对象的引用< /p>任何答复……在此回答中……