2 votes

Comment résoudre l'exception Xamarin.Forms.Platform.Android.ListViewAdapter.IsEnabled ?

J'ai une liste avec des éléments sélectionnés par l'utilisateur. Mon CustumCellViewTemplate possède un contrôle "unselect", qui supprime la cellule de la liste. Lorsque la liste est entièrement remplie d'éléments, le contrôle "unselect" fonctionne, mais lorsque je veux supprimer le dernier élément ou si le dernier élément apparaît dans la ListView, j'obtiens cette exception :

"System.NullReferenceException: Object reference not set to an instance of an object.
at Xamarin.Forms.Platform.Android.ListViewAdapter.IsEnabled (System.Int32 position) [0x0002a] in D:\a\1\s\Xamarin.Forms.Platform.Android\Renderers\ListViewAdapter.cs:413 
at Android.Widget.BaseAdapter.n_IsEnabled_I (System.IntPtr jnienv, System.IntPtr native__this, System.Int32 position) [0x00008] in <263adecfa58f4c449f1ff56156d886fd>:0 
at (wrapper dynamic-method) System.Object.389216aa-a260-49e0-aaaa-e4e2031ad22f(intptr,intptr,int)"

Voici ma configuration :

Mono 8.1
Xamarin.Forms 3.3.0.893527-pre3
Xamarin.Android.Support.Design 27.0.2.1
Xamarin.Android.Support.v7.AppCompat 27.0.2.1
Xamarin.Android.Support.v4 27.0.2.1
Xamarin.Android.Support.v7.CardView 27.0.2.1
Xamarin.Android.Support.v7.MediaRouter 27.0.2.1
Xamarin.GooglePlayServices.Location 60.1142.1
Xamarin.GooglePlayServices.Maps 60.1142.1
Xamarin.Essentials 0.10.0-preview

Avez-vous une idée de la façon de résoudre ce problème, s'il vous plaît ?

Salutations

3voto

Vous avez peut-être déjà résolu votre problème, mais je laisse cette information ici pour les autres personnes qui rencontrent ce problème.

Grâce à la question de Jason, j'ai pu nettoyer ma manipulation de la source d'éléments liables pour la logique de l'affichage de la liste. Je faisais beaucoup de .Clear() et d'Add dont je n'avais pas besoin. J'en ai réduit le nombre et cela a réglé le problème pour moi. J'examinerais donc la façon dont vous manipulez la source d'éléments pour la vue en liste.

0voto

r15 Points 3007

J'étais aussi confronté à cela avec ListView sur TabbedPage donc pendant que je changeais d'onglet, je réinitialisais ItemSource de Listview a résolu mon problème

protected void OnCurrentPageChanged()
{
    if (Children != null && CurrentPage != null)
    {
        list1.ItemsSource = null;
        list2.ItemsSource = null;
        list3.ItemsSource = null;

        SelectedTabIndex = Children.IndexOf(this.CurrentPage);

        if (SelectedTabIndex == 0)
            list1.ItemsSource = TimeTableListData;
        if  (SelectedTabIndex == 1)
            list2.ItemsSource = TimeTableListData;
        if (SelectedTabIndex == 2)
            list3.ItemsSource = TimeTableListData;
    }
}

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X