2013-08-21 3 views
0

У меня есть список с флажком на каждой строке, и мне нужно сделать так, чтобы, если пользователь выходит из приложения, а затем возвращается к этому запросу, те же элементы остаются отмеченными, я успешно сохранил проверенные элементы, но если я попытаюсь перепроверить их в методе 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; 
        } 
       } 
      } 

     } 

Тха

ответ

1

Если что, используя блок в GetView(), вы подключаетесь к базе данных и вытягивать список функций каждый раз, отображается новый элемент. Вот почему вы видите отставание.

Вы также не устанавливаете значение Проверено на значение false, если функция отсутствует в списке, поэтому при повторном использовании конвертирования флажок может быть уже установлен. Вот почему вы проверяете случайные поля.

Я бы выбрал выбранные функции в конструкторе адаптера, а затем ссылаюсь на этот список в вашем 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); 
    }