diff --git a/GalaSoft.MvvmLight/GalaSoft.MvvmLight (VS2017).sln b/GalaSoft.MvvmLight/GalaSoft.MvvmLight (VS2017).sln
index de6f756b..85ffa66c 100644
--- a/GalaSoft.MvvmLight/GalaSoft.MvvmLight (VS2017).sln
+++ b/GalaSoft.MvvmLight/GalaSoft.MvvmLight (VS2017).sln
@@ -33,6 +33,8 @@ Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "GalaSoft.MvvmLight.Platform
EndProject
Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "GalaSoft.MvvmLight.Test (PNET45)", "Tests\PCL\GalaSoft.MvvmLight.Test (PNET45)\GalaSoft.MvvmLight.Test (PNET45).csproj", "{B2EF9514-C8C2-444E-AF84-960AC9989A08}"
EndProject
+Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "GalaSoft.MvvmLight.Platform.AndroidX", "GalaSoft.MvvmLight.AndroidX\GalaSoft.MvvmLight.Platform.AndroidX.csproj", "{FAA2B9A7-6FB5-4980-9A22-9A6F48DA0BDA}"
+EndProject
Global
GlobalSection(SolutionConfigurationPlatforms) = preSolution
Ad-Hoc|Any CPU = Ad-Hoc|Any CPU
@@ -741,6 +743,54 @@ Global
{B2EF9514-C8C2-444E-AF84-960AC9989A08}.Release|x64.Build.0 = Release|Any CPU
{B2EF9514-C8C2-444E-AF84-960AC9989A08}.Release|x86.ActiveCfg = Release|Any CPU
{B2EF9514-C8C2-444E-AF84-960AC9989A08}.Release|x86.Build.0 = Release|Any CPU
+ {FAA2B9A7-6FB5-4980-9A22-9A6F48DA0BDA}.Ad-Hoc|Any CPU.ActiveCfg = Release|Any CPU
+ {FAA2B9A7-6FB5-4980-9A22-9A6F48DA0BDA}.Ad-Hoc|Any CPU.Build.0 = Release|Any CPU
+ {FAA2B9A7-6FB5-4980-9A22-9A6F48DA0BDA}.Ad-Hoc|ARM.ActiveCfg = Release|Any CPU
+ {FAA2B9A7-6FB5-4980-9A22-9A6F48DA0BDA}.Ad-Hoc|ARM.Build.0 = Release|Any CPU
+ {FAA2B9A7-6FB5-4980-9A22-9A6F48DA0BDA}.Ad-Hoc|iPhone.ActiveCfg = Release|Any CPU
+ {FAA2B9A7-6FB5-4980-9A22-9A6F48DA0BDA}.Ad-Hoc|iPhone.Build.0 = Release|Any CPU
+ {FAA2B9A7-6FB5-4980-9A22-9A6F48DA0BDA}.Ad-Hoc|iPhoneSimulator.ActiveCfg = Release|Any CPU
+ {FAA2B9A7-6FB5-4980-9A22-9A6F48DA0BDA}.Ad-Hoc|iPhoneSimulator.Build.0 = Release|Any CPU
+ {FAA2B9A7-6FB5-4980-9A22-9A6F48DA0BDA}.Ad-Hoc|x64.ActiveCfg = Release|Any CPU
+ {FAA2B9A7-6FB5-4980-9A22-9A6F48DA0BDA}.Ad-Hoc|x64.Build.0 = Release|Any CPU
+ {FAA2B9A7-6FB5-4980-9A22-9A6F48DA0BDA}.Ad-Hoc|x86.ActiveCfg = Release|Any CPU
+ {FAA2B9A7-6FB5-4980-9A22-9A6F48DA0BDA}.Ad-Hoc|x86.Build.0 = Release|Any CPU
+ {FAA2B9A7-6FB5-4980-9A22-9A6F48DA0BDA}.AppStore|Any CPU.ActiveCfg = Release|Any CPU
+ {FAA2B9A7-6FB5-4980-9A22-9A6F48DA0BDA}.AppStore|Any CPU.Build.0 = Release|Any CPU
+ {FAA2B9A7-6FB5-4980-9A22-9A6F48DA0BDA}.AppStore|ARM.ActiveCfg = Release|Any CPU
+ {FAA2B9A7-6FB5-4980-9A22-9A6F48DA0BDA}.AppStore|ARM.Build.0 = Release|Any CPU
+ {FAA2B9A7-6FB5-4980-9A22-9A6F48DA0BDA}.AppStore|iPhone.ActiveCfg = Release|Any CPU
+ {FAA2B9A7-6FB5-4980-9A22-9A6F48DA0BDA}.AppStore|iPhone.Build.0 = Release|Any CPU
+ {FAA2B9A7-6FB5-4980-9A22-9A6F48DA0BDA}.AppStore|iPhoneSimulator.ActiveCfg = Release|Any CPU
+ {FAA2B9A7-6FB5-4980-9A22-9A6F48DA0BDA}.AppStore|iPhoneSimulator.Build.0 = Release|Any CPU
+ {FAA2B9A7-6FB5-4980-9A22-9A6F48DA0BDA}.AppStore|x64.ActiveCfg = Release|Any CPU
+ {FAA2B9A7-6FB5-4980-9A22-9A6F48DA0BDA}.AppStore|x64.Build.0 = Release|Any CPU
+ {FAA2B9A7-6FB5-4980-9A22-9A6F48DA0BDA}.AppStore|x86.ActiveCfg = Release|Any CPU
+ {FAA2B9A7-6FB5-4980-9A22-9A6F48DA0BDA}.AppStore|x86.Build.0 = Release|Any CPU
+ {FAA2B9A7-6FB5-4980-9A22-9A6F48DA0BDA}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
+ {FAA2B9A7-6FB5-4980-9A22-9A6F48DA0BDA}.Debug|Any CPU.Build.0 = Debug|Any CPU
+ {FAA2B9A7-6FB5-4980-9A22-9A6F48DA0BDA}.Debug|ARM.ActiveCfg = Debug|Any CPU
+ {FAA2B9A7-6FB5-4980-9A22-9A6F48DA0BDA}.Debug|ARM.Build.0 = Debug|Any CPU
+ {FAA2B9A7-6FB5-4980-9A22-9A6F48DA0BDA}.Debug|iPhone.ActiveCfg = Debug|Any CPU
+ {FAA2B9A7-6FB5-4980-9A22-9A6F48DA0BDA}.Debug|iPhone.Build.0 = Debug|Any CPU
+ {FAA2B9A7-6FB5-4980-9A22-9A6F48DA0BDA}.Debug|iPhoneSimulator.ActiveCfg = Debug|Any CPU
+ {FAA2B9A7-6FB5-4980-9A22-9A6F48DA0BDA}.Debug|iPhoneSimulator.Build.0 = Debug|Any CPU
+ {FAA2B9A7-6FB5-4980-9A22-9A6F48DA0BDA}.Debug|x64.ActiveCfg = Debug|Any CPU
+ {FAA2B9A7-6FB5-4980-9A22-9A6F48DA0BDA}.Debug|x64.Build.0 = Debug|Any CPU
+ {FAA2B9A7-6FB5-4980-9A22-9A6F48DA0BDA}.Debug|x86.ActiveCfg = Debug|Any CPU
+ {FAA2B9A7-6FB5-4980-9A22-9A6F48DA0BDA}.Debug|x86.Build.0 = Debug|Any CPU
+ {FAA2B9A7-6FB5-4980-9A22-9A6F48DA0BDA}.Release|Any CPU.ActiveCfg = Release|Any CPU
+ {FAA2B9A7-6FB5-4980-9A22-9A6F48DA0BDA}.Release|Any CPU.Build.0 = Release|Any CPU
+ {FAA2B9A7-6FB5-4980-9A22-9A6F48DA0BDA}.Release|ARM.ActiveCfg = Release|Any CPU
+ {FAA2B9A7-6FB5-4980-9A22-9A6F48DA0BDA}.Release|ARM.Build.0 = Release|Any CPU
+ {FAA2B9A7-6FB5-4980-9A22-9A6F48DA0BDA}.Release|iPhone.ActiveCfg = Release|Any CPU
+ {FAA2B9A7-6FB5-4980-9A22-9A6F48DA0BDA}.Release|iPhone.Build.0 = Release|Any CPU
+ {FAA2B9A7-6FB5-4980-9A22-9A6F48DA0BDA}.Release|iPhoneSimulator.ActiveCfg = Release|Any CPU
+ {FAA2B9A7-6FB5-4980-9A22-9A6F48DA0BDA}.Release|iPhoneSimulator.Build.0 = Release|Any CPU
+ {FAA2B9A7-6FB5-4980-9A22-9A6F48DA0BDA}.Release|x64.ActiveCfg = Release|Any CPU
+ {FAA2B9A7-6FB5-4980-9A22-9A6F48DA0BDA}.Release|x64.Build.0 = Release|Any CPU
+ {FAA2B9A7-6FB5-4980-9A22-9A6F48DA0BDA}.Release|x86.ActiveCfg = Release|Any CPU
+ {FAA2B9A7-6FB5-4980-9A22-9A6F48DA0BDA}.Release|x86.Build.0 = Release|Any CPU
EndGlobalSection
GlobalSection(SolutionProperties) = preSolution
HideSolutionNode = FALSE
diff --git a/GalaSoft.MvvmLight/GalaSoft.MvvmLight.AndroidSupport/Resources/Resource.Designer.cs b/GalaSoft.MvvmLight/GalaSoft.MvvmLight.AndroidSupport/Resources/Resource.Designer.cs
index e69de29b..6a8431a6 100644
--- a/GalaSoft.MvvmLight/GalaSoft.MvvmLight.AndroidSupport/Resources/Resource.Designer.cs
+++ b/GalaSoft.MvvmLight/GalaSoft.MvvmLight.AndroidSupport/Resources/Resource.Designer.cs
@@ -0,0 +1,41 @@
+#pragma warning disable 1591
+//------------------------------------------------------------------------------
+//
+// This code was generated by a tool.
+// Runtime Version:4.0.30319.42000
+//
+// Changes to this file may cause incorrect behavior and will be lost if
+// the code is regenerated.
+//
+//------------------------------------------------------------------------------
+
+[assembly: global::Android.Runtime.ResourceDesignerAttribute("GalaSoft.MvvmLight.Resource", IsApplication=false)]
+
+namespace GalaSoft.MvvmLight
+{
+
+
+ [System.CodeDom.Compiler.GeneratedCodeAttribute("Xamarin.Android.Build.Tasks", "1.0.0.0")]
+ public partial class Resource
+ {
+
+ static Resource()
+ {
+ global::Android.Runtime.ResourceIdManager.UpdateIdValues();
+ }
+
+ public partial class Attribute
+ {
+
+ static Attribute()
+ {
+ global::Android.Runtime.ResourceIdManager.UpdateIdValues();
+ }
+
+ private Attribute()
+ {
+ }
+ }
+ }
+}
+#pragma warning restore 1591
diff --git a/GalaSoft.MvvmLight/GalaSoft.MvvmLight.AndroidX/GalaSoft.MvvmLight.Platform.AndroidX.csproj b/GalaSoft.MvvmLight/GalaSoft.MvvmLight.AndroidX/GalaSoft.MvvmLight.Platform.AndroidX.csproj
new file mode 100644
index 00000000..15970bf6
--- /dev/null
+++ b/GalaSoft.MvvmLight/GalaSoft.MvvmLight.AndroidX/GalaSoft.MvvmLight.Platform.AndroidX.csproj
@@ -0,0 +1,115 @@
+
+
+
+
+ Debug
+ AnyCPU
+ 8.0.30703
+ 2.0
+ {FAA2B9A7-6FB5-4980-9A22-9A6F48DA0BDA}
+ {EFBA0AD7-5A72-4C68-AF49-83D382785DCF};{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}
+ Library
+ Properties
+ GalaSoft.MvvmLight
+ GalaSoft.MvvmLight.Platform.AndroidX
+ 512
+ Resources\Resource.Designer.cs
+ Off
+ v9.0
+
+
+ true
+ full
+ false
+ bin\Debug\
+ TRACE;XAMARIN;ANDROID;DEBUG
+ prompt
+ 4
+ bin\Debug\GalaSoft.MvvmLight.Platform.AndroidX.XML
+
+
+ pdbonly
+ true
+ bin\Release\
+ TRACE;XAMARIN;ANDROID
+ prompt
+ 4
+ bin\Release\GalaSoft.MvvmLight.Platform.AndroidX.XML
+
+
+
+
+
+
+
+
+
+ ..\packages\Xamarin.AndroidX.MultiDex.2.0.1.1\lib\monoandroid90\Xamarin.AndroidX.MultiDex.dll
+
+
+
+ ..\packages\Xamarin.AndroidX.Annotation.1.1.0.1\lib\monoandroid90\Xamarin.AndroidX.Annotation.dll
+
+
+ ..\packages\Xamarin.AndroidX.Arch.Core.Common.2.1.0.1\lib\monoandroid90\Xamarin.AndroidX.Arch.Core.Common.dll
+
+
+ ..\packages\Xamarin.AndroidX.Collection.1.1.0.1\lib\monoandroid90\Xamarin.AndroidX.Collection.dll
+
+
+ ..\packages\Xamarin.AndroidX.Lifecycle.Common.2.2.0.1\lib\monoandroid90\Xamarin.AndroidX.Lifecycle.Common.dll
+
+
+ ..\packages\Xamarin.AndroidX.Lifecycle.Runtime.2.2.0.1\lib\monoandroid90\Xamarin.AndroidX.Lifecycle.Runtime.dll
+
+
+ ..\packages\Xamarin.AndroidX.VersionedParcelable.1.1.1.1\lib\monoandroid90\Xamarin.AndroidX.VersionedParcelable.dll
+
+
+ ..\packages\Xamarin.AndroidX.Core.1.2.0.1\lib\monoandroid90\Xamarin.AndroidX.Core.dll
+
+
+ ..\packages\Xamarin.AndroidX.CustomView.1.0.0.1\lib\monoandroid90\Xamarin.AndroidX.CustomView.dll
+
+
+ ..\packages\Xamarin.AndroidX.RecyclerView.1.1.0.1\lib\monoandroid90\Xamarin.AndroidX.RecyclerView.dll
+
+
+
+
+ Properties\AssemblyInfo.cs
+
+
+
+
+
+
+
+
+ {A5B7741D-E331-438C-B3BF-596B048DB622}
+ GalaSoft.MvvmLight.Platform (Android)
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/GalaSoft.MvvmLight/GalaSoft.MvvmLight.AndroidX/Helpers/CachingViewHolder.cs b/GalaSoft.MvvmLight/GalaSoft.MvvmLight.AndroidX/Helpers/CachingViewHolder.cs
new file mode 100644
index 00000000..54165dd4
--- /dev/null
+++ b/GalaSoft.MvvmLight/GalaSoft.MvvmLight.AndroidX/Helpers/CachingViewHolder.cs
@@ -0,0 +1,148 @@
+using System;
+using System.Collections.Generic;
+using Android.Runtime;
+using AndroidX.RecyclerView.Widget;
+using Android.Views;
+
+namespace GalaSoft.MvvmLight.Helpers
+{
+ ///
+ /// An extension of optimized for usage with the
+ /// . Provides additional features
+ /// that can be used with the MVVM Light data binding system.
+ ///
+ ////[ClassInfo(typeof(ObservableAdapter))]
+ public class CachingViewHolder : RecyclerView.ViewHolder
+ {
+ private readonly Dictionary