Another suggestion would be for the Web.ResponseFileName method to also work on iOS — meaning that a path such as var/mobile/Containers/Data/Application/ACED13D7-C417-4E34-A45C-084FBB999383/Library/Application Support/AppInventor/Downloads/app_inventor_1792221598134.m4a
would instead be var/mobile/.../Downloads/"myFileName".m4a
When I enable MultiSelect, the ListView.Selection and ListView.SelectionIndex methods do not return the correct value. They always return the item that was clicked last — regardless of whether it is actually selected or not.
Therefore, we must not use the ListView.Selection and ListView.SelectionIndex methods if MultiSelectis enabled. Instead, we should rely only on ListView.SelectedItems. However, in this case, we also require a corresponding counterpart: ListView.SelectedIndexItems.
I have tested whith Android the new property to LocationSensor and runs well, but for iOS I can not generate the IPA built in the Ai2 test-server. I receive this built error message:
Ok. Now the old iOS-test server: https://iosbuildservertest.appinventor.mit.edu built the iOS-IPAs. I can test the new sensorlocation.timestamp block in the iOS platform to manage the cache locations.
The new LocationSensor lastTimeStamp property is running well in both platforms (iOS and Android). To can verify the possible cache locations in a real environment I need more time to do different tests in several locations and times.
@Anke I looked into the ListView MultiSelect behaviour.
Selection and SelectionIndex returning the last clicked item is intentional, on both Android and iOS. With MultiSelect on, they report the row the last tap changed, even if that tap deselected it. AfterPicking also fires for every tap. This comes from the original MultiSelect design, where you had to keep your own list of selected items and needed to know which row was just tapped. It's described in the docs: "Read SelectedItems for what is selected now."
For example, tap Apple, then Banana, then Apple again. After the last tap, Selection is still "Apple" (index 1) even though Apple was just deselected, while SelectedItems is ["Banana"].
Until there is an index list, you can tell whether the last tap selected or deselected a row by checking, in AfterPicking, whether ListView.Selection is in ListView.SelectedItems. That doesn't work if two items have the same text.
I agree there should be an index version of SelectedItems. Both platforms already store the selection as indexes internally, so adding a SelectedIndices property is a small change. I'll open an issue and a PR for it.
If you want to go ahead and implement a property like that, that's fine. However, we are about to do a release so it won't be in the version going out this week.