我有两个名为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
答案 0 :(得分:1)
问题在于您在userInfoList = allUserList
行中的作业。
您正在创建参考。他们都指向相同的数据。
如果你这样做: -
allUserList = await ParseMethods.GetUserList();
userInfoList = await ParseMethods.GetUserList();
您会发现userInfoList.Clear()
上的清晰方法调用将按预期工作,并且allUserList
保留该集合仍然完整。
或者,如果这是一个代价高昂的数据调用,您可以克隆结果集,以便不使用引用指针。