Moving the property to the file level will certainly work in this case, but it does have some potential side effects to watch out for. Storing data at the class level will cause the compiler to create a class to hold that property, which will be static. This is effectively creating a global state for you app that the activity can access. For GeoQuiz, this can work.
However, the issue comes up since there’s no way to ensure this data is cleaned up at the appropriate time. If you had multiple activities that needed their own index, it would not be possible with the class property since all of the instances would point to the same data.
In order to avoid this type of global state, it’s recommended to use the ViewModel since it’s guaranteed to be tied to an instance of your activity so it will be cleaned up when it’s not needed anymore.