2015-03-18 4 views
1

Привет, Я пытаюсь обновить listView, добавив и удалив элемент из него. Добавление элемента в listview отлично работает в iOS и Android. Но удаление любого предмета из него дает неправильный выход на Android, он отлично работает на iOS. В Android: всякий раз, когда я удаляю элемент из списка, он удаляется из коллекции, но в пользовательском интерфейсе он удаляет последний элемент, присутствующий в пользовательском интерфейсе после удаления, когда я добавляю его снова, добавляет ранее удаленный элемент в список, а не новый новый новый элемент. Пожалуйста, проверьте код, который я использовалXamarin forms xaml Listview не обновляется в соответствии с изменениями коллекции

<ListView RowHeight="100" HorizontalOptions="End" ItemsSource="{Binding GuidePrices, Mode=OneWay}" > 
    <ListView.ItemTemplate> 
    <DataTemplate> 
     <ViewCell> 
     <ViewCell.View> 
      <StackLayout Orientation="Horizontal"> 
      <controls:BindablePicker ItemsSource="{Binding Prices}" WidthRequest="150" SelectedItem="{Binding SelectedProduct, Mode=TwoWay}" /> 
      <Button Text="Add" IsVisible="{Binding Action}"> 
       <b:Interaction.Behaviors> 
       <b:BehaviorCollection> 
        <b:EventToCommand CommandNameContext="{b:RelativeContext CampsiteViewPage}" 
         EventName="Clicked" 
         CommandName="AddPriceListCommand" 
         CommandParameter="{Binding}" /> 
       </b:BehaviorCollection> 
       </b:Interaction.Behaviors> 
      </Button> 
      <Button Text="Delete" IsVisible="{Binding Action, Converter={StaticResource cnvInvert}}"> 
       <b:Interaction.Behaviors> 
       <b:BehaviorCollection> 
        <b:EventToCommand CommandNameContext="{b:RelativeContext CampsiteViewPage}" 
         EventName="Clicked" 
         CommandName="DeletePriceListCommand" 
         CommandParameter="{Binding}" /> 
       </b:BehaviorCollection> 
       </b:Interaction.Behaviors> 
      </Button> 
      </StackLayout> 
     </ViewCell.View> 
     </ViewCell> 
    </DataTemplate> 
    </ListView.ItemTemplate> 
</ListView> 

--ViewModel код на добавление и удаление команду

this.AddPriceListCommand = new Command((s) => 
     { 
      if (_guidePrices != null) 
       { 
       _guidePrices.Add(new PricesListModel() { ListId = Guid.NewGuid(), Action = false, Prices = _campsite.Guides[0].Prices }); 
       } 
     }); 

     this.DeletePriceListCommand = new Command((sender) => { 

     var _priseList = (from priceList in _guidePrices 
          where priceList == (PricesListModel)sender 
        select priceList).ToList(); 
     _guidePrices.RemoveAt(_guidePrices.IndexOf((PricesListModel)sender)); 

      }); 

Я не могу найти причину, по которой это поведение на андроид, как тот же код работает в ИОС, как и ожидалось.

+0

Какая версия Xamarin.Forms вы используете? –

+0

вот моя конфигурация В.С. Xamarin Xamarin 3.9.519.0 (5667ef4) Xamarin.Android 4.20.0.37 Xamarin.iOS 8.8.1.0 Xamarin.iOS Унифицированные миграции 1,0 – Rajendra

ответ

0

Что такое _guidePrices? Удаление элемента из List<T> не обновляет пользовательский интерфейс. Вам необходимо использовать ObservableCollction<T> или повысить значение события PropertyChanged для уведомления об обновлении

+0

Да я использую 'ObservableCollction ', и мой ListView обновляйтесь, но всякий раз, когда я удаляю средний элемент в списке, он удаляет последний элемент из пользовательского интерфейса. Также, когда я добавляю новый элемент вместо добавления нового элемента, он добавляет удаленный элемент в конце. Удаление ok в наблюдаемой коллекции. ЭТО РАБОТАЕТ В iOS КАК ОЖИДАЕТСЯ. Не получается, почему с планшетом Android. – Rajendra

+0

Prashant любой догадки для этого поведения в Android, поэтому я могу обойти. – Rajendra

+0

Я понятия не имею, мне придется попробовать его на моей машине –

 Смежные вопросы

  • Нет связанных вопросов^_^