diff --git a/src/Mono.Android/Android.Runtime/JavaList.cs b/src/Mono.Android/Android.Runtime/JavaList.cs index 478fbdfdb33..6d12575963c 100644 --- a/src/Mono.Android/Android.Runtime/JavaList.cs +++ b/src/Mono.Android/Android.Runtime/JavaList.cs @@ -546,14 +546,13 @@ public static IntPtr ToLocalJniHandle (IList? items) // public virtual bool Add (Java.Lang.Object? item) { - return Add (0, item); + Add ((object?) item); + return true; } public virtual bool Add (int index, Java.Lang.Object? item) { - if (Contains (item)) - return false; - Add ((object?) item); + Insert (index, (object?) item); return true; } diff --git a/tests/Mono.Android-Tests/Java.Interop/JavaListTest.cs b/tests/Mono.Android-Tests/Java.Interop/JavaListTest.cs index bd47368bdef..3ac3c8220f9 100644 --- a/tests/Mono.Android-Tests/Java.Interop/JavaListTest.cs +++ b/tests/Mono.Android-Tests/Java.Interop/JavaListTest.cs @@ -15,6 +15,38 @@ namespace Java.InteropTests [SetUp] public void Setup () => list = new T (); + [Test] + public void Add () + { + list.Add ("foo"); + Assert.AreEqual ("foo", list [0]); + + // Ensure duplicates are allowed. + list.Add ("foo"); + Assert.AreEqual (2, list.Count); + Assert.AreEqual ("foo", list [1]); + } + + [Test] + public void AddWithIndex () + { + list.Add ("Apple"); + list.Add ("Banana"); + list.Add ("Cherry"); + + // Ensure index is respected. + list.Add (3, "Grape"); + list.Add (2, "Blueberry"); + list.Add (4, "Fig"); + + Assert.AreEqual ("Apple", list [0]); + Assert.AreEqual ("Banana", list [1]); + Assert.AreEqual ("Blueberry", list [2]); + Assert.AreEqual ("Cherry", list [3]); + Assert.AreEqual ("Fig", list [4]); + Assert.AreEqual ("Grape", list [5]); + } + [Test] public void Count () {