如何解决Xamarin.Forms.Platform.Android.ListViewAdapter.IsEnabled异常?

时间:2018-10-12 16:40:44

标签: xamarin exception xamarin.forms xamarin.android

我有一个列表,其中包含一些用户的选定项目。我的CustumCellViewTemplate具有一个“取消选择”控件,该控件从列表中删除了该单元格。 当列表完全充满项目时,“取消选择”控件起作用,但是当我想删除最后一个项目或者如果最后一个项目出现在ListView中时,我得到此异常:

"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)"

这是我的配置:

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

请问您有办法解决此问题吗?

致谢

2 个答案:

答案 0 :(得分:2)

您现在可能已经解决了您的问题,但只是将此问题留给了其他遇到此问题的人。

由于Jason的问题,它使我为列表视图逻辑清理了对可绑定项源的操纵。我做了很多.Clear()和Add,我不需要做。我减少了这些数量,这为我解决了这个问题。因此,我将研究您如何将ItemSource用于列表视图。

答案 1 :(得分:0)

我在ListView中使用 TabbedPage 来面对这个问题,因此在更改标签时,我将ItemSource中的Listview重置了,解决了我的问题< / p>

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;
    }
}