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

Xamarin ListView.Clear()也会清除其他列表视图

问题在于userInfoList = allUserList行中的赋值。

您正在创建引用。它们都指向相同的数据。

如果你这样做:-

allUserList = await ParseMethods.GetUserList();
userInfoList = await ParseMethods.GetUserList();

您会发现在userInfoList.Clear()上的clear方法调用将按预期工作,并使allUserList的集合保持不变。

或者,如果这是一个代价高昂的数据调用,您可以克隆结果集,这样就不会使用引用指针。