保存选中的项目是列表视图

本文关键字:列表 视图 项目 保存 | 更新日期: 2023-09-27 18:28:33

我有一个列表视图,每行都有一个复选框,我需要这样做,如果用户退出应用程序并稍后返回该列表视图,则相同的项目仍处于选中状态,我已成功保存了选中的项目,但如果我尝试用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

保存选中的项目是列表视图

如果using块在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);
    }