Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/android/192.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 保存选中项为listview_C#_Android_List_Xamarin.android - Fatal编程技术网

C# 保存选中项为listview

C# 保存选中项为listview,c#,android,list,xamarin.android,C#,Android,List,Xamarin.android,我有一个列表视图,每行都有一个复选框,我需要这样做,如果用户退出应用程序,然后返回到该列表视图,则相同的项目仍处于选中状态,我已成功保存选中的项目,但如果我尝试在getview()方法中重新检查它们,列表将开始延迟,随机复选框开始被选中 下面是我重新检查框的代码 using (VehicleFeaturesDB vfdb = new VehicleFeaturesDB()) { selectedfeatures = vfdb.GetSelectedFeature

我有一个列表视图,每行都有一个复选框,我需要这样做,如果用户退出应用程序,然后返回到该列表视图,则相同的项目仍处于选中状态,我已成功保存选中的项目,但如果我尝试在
getview()
方法中重新检查它们,列表将开始延迟,随机复选框开始被选中

下面是我重新检查框的代码

 using (VehicleFeaturesDB vfdb = new VehicleFeaturesDB())
      {
          selectedfeatures = vfdb.GetSelectedFeatures(Selector.vehicleId);

          if (listOfSelectedFeatures != null)
          {
              foreach (Features f in listOfSelectedFeatures)
              {
                  if (feature.FeatureID == f.FeatureID)
                  {
                      CheckBox.Checked = true;
                  }
              }
          }

      }

Tha

如果使用块位于GetView()中,则每次显示新项目时,您都连接到数据库并拉动功能列表。这就是为什么你会看到滞后

如果功能不在列表中,您也不会将Checked设置为false,因此当您重新使用convertview时,该复选框可能已经被选中。这就是为什么你会看到随机框被选中

我可能会在适配器的构造函数中获取所选功能,然后在GetView()中引用该列表。像这样的东西应该适合你

public class MyAdapter...
{
    private IEnumerable<SelectedFeature> selectedFeatures;
    public MyAdapter()
    {
        ...your code...
        using (VehicleFeaturesDB vfdb = new VehicleFeaturesDB())
        {
            selectedfeatures = vfdb.GetSelectedFeatures(Selector.vehicleId);
        }
    }

    public override View GetView(int pos, View convertView, ViewGroup parent)
    {
        ...your code...
        CheckBox.Checked = selectedFeatures.Any(sf => sf.FeatureID == feature.FeatureID);
    }
公共类MyAdapter。。。
{
私有IEnumerable selectedFeatures;
公共MyAdapter()
{
…你的代码。。。
使用(VehicleFeaturesDB vfdb=新VehicleFeaturesDB())
{
selectedfeatures=vfdb.GetSelectedFeatures(Selector.vehicleId);
}
}
公共覆盖视图GetView(int pos、视图转换视图、视图组父视图)
{
…你的代码。。。
CheckBox.Checked=selectedFeatures.Any(sf=>sf.FeatureID==feature.FeatureID);
}