Xamarin ListView.Clear()也会清除其他列表视图
本文关键字:清除 其他 列表 视图 ListView Clear Xamarin | 更新日期: 2023-09-27 18:29:26
我有两个名为userInfoList和allUserList的列表视图。listview实现了BaseAdapter
,并且运行良好。但是,当我在userInfoList上使用.Clear()
时,allUserList也会被清除。
有人能指出原因吗?
private List<UserInfoItem> userInfoList, allUserList;
//Populate User Data
public async void PopulateData(){
allUserList = await ParseMethods.GetUserList ();
userInfoList = allUserList;
adapter = new UserListViewAdapter(this, userInfoList);
list.Adapter = adapter;
.....
}
Console.WriteLine("All List Count: " + allUserList.Count.ToString());
userInfoList.Clear();
Console.WriteLine("All List Count: " + allUserList.Count.ToString());
输出:
所有列表计数:3
所有列表计数:0
问题在于userInfoList = allUserList
行中的赋值。
您正在创建引用。它们都指向相同的数据。
如果你这样做:-
allUserList = await ParseMethods.GetUserList();
userInfoList = await ParseMethods.GetUserList();
您会发现在userInfoList.Clear()
上的clear方法调用将按预期工作,并使allUserList
的集合保持不变。
或者,如果这是一个代价高昂的数据调用,您可以克隆结果集,这样就不会使用引用指针。