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

时间:2014-11-07 05:25:50

标签: c# android listview xamarin

我有两个名为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

1 个答案:

答案 0 :(得分:1)

问题在于您在userInfoList = allUserList行中的作业。

您正在创建参考。他们都指向相同的数据。

如果你这样做: -

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

您会发现userInfoList.Clear()上的清晰方法调用将按预期工作,并且allUserList保留该集合仍然完整。

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