Skip to content
This repository has been archived by the owner on May 1, 2024. It is now read-only.

Cannot reload Listview datasource more than once, app close after error, Object reference not set to an instance of an object #15852

Open
rhunoja opened this issue Dec 20, 2023 · 0 comments
Labels
s/unverified New report that has yet to be verified t/bug 🐛

Comments

@rhunoja
Copy link

rhunoja commented Dec 20, 2023

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="&#xf02B;" 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="&#xf03E;" 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="&#xf105;" 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#

Screenshots

screenshot1

Reproduction Link

Workaround

@rhunoja rhunoja added s/unverified New report that has yet to be verified t/bug 🐛 labels Dec 20, 2023
Sign up for free to subscribe to this conversation on GitHub. Already have an account? Sign in.
Labels
s/unverified New report that has yet to be verified t/bug 🐛
Projects
None yet
Development

No branches or pull requests

1 participant