Cannot reload Listview datasource more than once, app close after error, Object reference not set to an instance of an object #15852
Description
I had created a Listview of radiobutton, labels and a button binded using MVVM, at first time listview load well, but after execute CheckedChanged on group radiobutton, it make change on list datasource i call method that reload datasource but process is truncated and close app, on debugging it make error "Object reference not set to an instance of an object"
Steps to Reproduce
// MV class
namespace InspeccionesHS_App.ViewModels.CheckINAMViewModel.SetCheckINAMViewModel
{
public class RequestList1ViewModel: ViewModelBase
{
#region Commands
public INavigation Navigation { get; set; }
public ICommand NextCommand => new AsyncCommand(NextFormAsync);
public Command LoadRequestsCommand => new AsyncCommand(LoadListRequests);
#endregion
private List _requestList = new List();
public List RequestList
{
get { return _requestList; }
set { SetProperty(ref _requestList, value); }
}
public RequestList1ViewModel(INAMModel ins)
{
LoadListRequests();
}
public async Task LoadListRequests()
{
if (IsBusy)
return;
IsBusy = true;
try
{ // method tha load a list datasource
var ListItemRequestForm = new List();
RequestList = getDataList(ListItemRequestForm);
}
catch (Exception ex)
{
await _dialogService.ShowError(ex.Message, "Error", "Aceptar", null);
IsBusy = false;
}
finally
{
IsBusy = false;
}
}
}
}
// On view page i built
<Grid HorizontalOptions="FillAndExpand">
<Grid.RowDefinitions>
<RowDefinition Height="*"></RowDefinition>
</Grid.RowDefinitions>
<!--<StackLayout Grid.Row="0" Style="{StaticResource boxSubtitleLabel}" Orientation="Horizontal" BackgroundColor="{StaticResource NewmontBlue282}">
<Label Text="Preparar" Style="{StaticResource subtitleLabel}"/>
</StackLayout>-->
<StackLayout Grid.Row="0" HorizontalOptions="FillAndExpand" Orientation="Vertical">
<StackLayout Style="{StaticResource boxSubtitleLabel}" Orientation="Horizontal" BackgroundColor="{StaticResource NewmontBlue282}">
<Label Text="General" Style="{StaticResource subtitleLabel}"/>
<StackLayout Orientation="Horizontal" VerticalOptions="Center">
<Label Text="N/A" Style="{StaticResource subtitleLabel}" WidthRequest="30"/>
<CheckBox CheckedChanged="OnCategoryCheck"></CheckBox>
<!--<CheckBox IsChecked="{Binding Checked}" ></CheckBox>-->
</StackLayout>
</StackLayout>
<ListView x:Name="listRes"
ItemsSource="{Binding RequestList}"
IsRefreshing="{Binding IsBusy, Mode=OneWay}"
SelectionMode="None"
BackgroundColor="Transparent"
HasUnevenRows="True"
HorizontalOptions="Center"
VerticalOptions="FillAndExpand">
<ListView.ItemTemplate>
<DataTemplate>
<ViewCell>
<ViewCell.View>
<StackLayout HorizontalOptions="FillAndExpand" VerticalOptions="FillAndExpand">
<StackLayout Padding="10,5,10,0" >
<Label Text="{Binding Name}" Style="{StaticResource labelQuestionTitle}"/>
</StackLayout>
<StackLayout Padding="10,5,10,0" HorizontalOptions="FillAndExpand" VerticalOptions="FillAndExpand">
<Grid RowSpacing="0" ColumnSpacing="0">
<Grid.RowDefinitions>
<RowDefinition Height="24"/>
</Grid.RowDefinitions>
<Grid.ColumnDefinitions>
<ColumnDefinition Width="15*"></ColumnDefinition>
<ColumnDefinition Width="13*"></ColumnDefinition>
<ColumnDefinition Width="13*"></ColumnDefinition>
<ColumnDefinition Width="17*"></ColumnDefinition>
<ColumnDefinition Width="16*"></ColumnDefinition>
<ColumnDefinition Width="16*"></ColumnDefinition>
<ColumnDefinition Width="10*"></ColumnDefinition>
</Grid.ColumnDefinitions>
<StackLayout Grid.Row="0" Grid.Column="0" Orientation="Horizontal" Style="{StaticResource BoxRequestGrid}">
<Label Text="#" VerticalOptions="Start" Padding="0" Margin="0" VerticalTextAlignment="Start" FontAttributes="Bold" FontSize="{StaticResource FontSize18}"/>
<Label Text="{Binding ItemOrder}" Style="{StaticResource labelQuestionResult}"/>
</StackLayout>
<StackLayout Grid.Row="0" Grid.Column="1" Orientation="Horizontal" Style="{StaticResource BoxRequestGrid}">
<Label Text="" Style="{StaticResource labelQuestionTitle}">
<Label.FontFamily>
<OnPlatform x:TypeArguments="x:String" Android="fa-solid-900.ttf#Font Awesome 6 Free Solid" iOS="Font Awesome 6 Free Solid"/>
</Label.FontFamily>
</Label>
<Label Text="{Binding Discoveries}" Style="{StaticResource labelQuestionResult}"/>
</StackLayout>
<StackLayout Grid.Row="0" Grid.Column="2" Orientation="Horizontal" Style="{StaticResource BoxRequestGrid}">
<Label Text="" Style="{StaticResource labelQuestionTitle}" VerticalTextAlignment="Center">
<Label.FontFamily>
<OnPlatform x:TypeArguments="x:String" Android="fa-solid-900.ttf#Font Awesome 6 Free Solid" iOS="Font Awesome 6 Free Solid"/>
</Label.FontFamily>
</Label>
<Label Text="{Binding Photos}" Style="{StaticResource labelQuestionResult}"/>
</StackLayout>
<StackLayout Grid.Row="0" Grid.Column="3" Grid.ColumnSpan="3" RadioButtonGroup.GroupName="{Binding ItemOrder}"
Orientation="Horizontal" Style="{StaticResource BoxRequestGrid}">
<RadioButton Content="N/A" Value="1" IsChecked="{Binding NA}" Style="{StaticResource RadioButtonReply}" CheckedChanged="OnReplyRadioButtonCheckedChanged"/>
<RadioButton Content="Si" Value="2" IsChecked="{Binding SI}" Style="{StaticResource RadioButtonReply}" CheckedChanged="OnReplyRadioButtonCheckedChanged"/>
<RadioButton Content="No" Value="3" IsChecked="{Binding NO}" Style="{StaticResource RadioButtonReply}" CheckedChanged="OnReplyRadioButtonCheckedChanged"/>
</StackLayout>
<StackLayout Grid.Column="6" Grid.Row="0" Orientation="Horizontal" VerticalOptions="CenterAndExpand" HorizontalOptions="Center">
<Button Text="" TextColor="{StaticResource IconColor}" Clicked="OnDiscovery_clicked" VerticalOptions="CenterAndExpand"
BackgroundColor="Transparent" FontAttributes="Bold" HorizontalOptions="Start"
Padding="2,0,52,0" Margin="0" FontSize="{StaticResource FontSizeMedium}" >
<Button.FontFamily>
<OnPlatform x:TypeArguments="x:String" Android="fa-solid-900.ttf#Font Awesome 6 Free Solid" iOS="Font Awesome 6 Free Solid"/>
</Button.FontFamily>
</Button>
</StackLayout>
</Grid>
</StackLayout>
<StackLayout HorizontalOptions="FillAndExpand" HeightRequest="3" BackgroundColor="LightGray"></StackLayout>
</StackLayout>
</ViewCell.View>
</ViewCell>
</DataTemplate>
</ListView.ItemTemplate>
</ListView>
<StackLayout HorizontalOptions="FillAndExpand" Style="{StaticResource PaddingSection}" >
<Button Text="Siguiente" Style="{StaticResource buttonNav}" Command="{Binding NextCommand}"/>
</StackLayout>
</StackLayout>
</Grid>
// I guess i make all implementation well, this is cs class from view page
public partial class RequestList1View : ContentPage
{
RequestList1ViewModel viewModel;
public RequestList1View(INAMModel _item)
{
InitializeComponent();
BindingContext = viewModel = new RequestList1ViewModel(_item);
viewModel.Navigation = Navigation;
NavigationPage.SetBackButtonTitle(this, string.Empty);
}
protected override async void OnAppearing()
{
base.OnAppearing();
}
async void OnCategoryCheck(object sender, CheckedChangedEventArgs e)
{
var b = (CheckBox)sender;
var reply = (b.IsChecked) ? "1" : "0";
await viewModel.UpdateRequestSelected(reply);
viewModel.LoadRequestsCommand.Execute(null);
}
void OnReplyRadioButtonCheckedChanged(object sender, CheckedChangedEventArgs e)
{
RadioButton button = sender as RadioButton;
var _request = button.BindingContext as INAMRequestFormModel;
_request.Reply = button.Value.ToString();
}
}
Expected Behavior
Reload List item and show changes on runtine after make checkedchanges
Actual Behavior
Basic Information
- Version with issue:
- Last known good version:
- Platform Target Frameworks:
- iOS:
- Android:
- UWP:
- Android Support Library / AndroidX Version:
- NuGet Packages:
- Affected Devices:
Environment
Show/Hide Visual Studio info
Build Logs
System.NullReferenceException
Mensaje = Object reference not set to an instance of an object.
0xC in System.Runtime.ExceptionServices.ExceptionDispatchInfo.Throw at /Users/builder/jenkins/workspace/archive-mono/2020-02/android/release/mcs/class/referencesource/mscorlib/system/runtime/exceptionservices/exceptionservicescommon.cs:157,13 C#
0x6 in System.Runtime.CompilerServices.AsyncMethodBuilderCore.<>c.<ThrowAsync>b__7_0 at /Users/builder/jenkins/workspace/archive-mono/2020-02/android/release/mcs/class/referencesource/mscorlib/system/runtime/compilerservices/AsyncMethodBuilder.cs:1021,49 C#
0xC in Android.App.SyncContext. at /Users/runner/work/1/s/xamarin-android/src/Mono.Android/Android.App/SyncContext.cs:36,19 C#
0xE in Java.Lang.Thread.RunnableImplementor.Run at /Users/runner/work/1/s/xamarin-android/src/Mono.Android/Java.Lang/Thread.cs:36,6 C#
0x8 in Java.Lang.IRunnableInvoker.n_Run at /Users/runner/work/1/s/xamarin-android/src/Mono.Android/obj/Release/monoandroid10/android-33/mcw/Java.Lang.IRunnable.cs:84,4 C#
0x8 in Android.Runtime.JNINativeWrapper.Wrap_JniMarshal_PP_V at /Users/runner/work/1/s/xamarin-android/src/Mono.Android/Android.Runtime/JNINativeWrapper.g.cs:22,5 C#