【问题标题】:Xamarin ListView .Clear() clears other listview tooXamarin ListView .Clear() 也清除其他列表视图
【发布时间】:2014-11-07 05:25:49
【问题描述】:

我有两个名为 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 但结果是一样的..
  • 你是如何初始化列表的?
  • 是的,温妮。当我从解析中检索数据时,我在我的一个代码中做到了这一点。我也会发布部分。有什么我不应该在那里做的吗?
  • 嗨 MattR 我已经添加了我添加数据的代码部分
  • 发生这种情况是因为当您将分配列表列出来创建引用时。

标签: c# android listview xamarin


【解决方案1】:

问题是您在userInfoList = allUserList 行中的分配。

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

如果你这样做:-

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

您会发现您在userInfoList.Clear() 处的clear 方法调用将按预期工作,而allUserList 的集合仍然完好无损。

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

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2016-11-08
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-04-17
    • 1970-01-01
    相关资源
    最近更新 更多