We are currently designing an app to display random photos from a database together with their location on a map.
We have managed to set up the Airtable/mediaDB database and to generate random photo display. However, the location on the map shown (latitude and longitude) is not linked to the randomly selected photo. The same location is retrieved each time.
It seems that the latitude and longitude in the Thunkable block is always set to 1, while the photo is updated randomly with each click. We somehow need to access the latitude and longitude that is attached to the photo. So three records for the same Airtable.
Below the current blocks.
Thanks for any help you may be able to provide!
Tom
Did you create the blocks in your screenshot? I only ask because it’s your first time posting and it sounds like you might not understand how all of these blocks work. I can explain more if you need it but if you designed the blocks and understand them but just missed the two "1"s then read on…
To fix this, instead of getting a random list item, first set a variable’s value to a random integer from 1 to the length of the Photos list. Then, use that variable value as the list item number for the Photos list, the Lat list and the Long list.
Use this suggestion from @tatiang outside the for loop. Currently, you are selecting a random photo each time you loop and get the condition evaluated to true which is not something you want.
You should first loop through all the record to build the three lists with values matching your condition. One the loop is over then do @tatiang recommendation to view the photo with related coordinates.
Yes, I am pretty new to thunkable, while I think I understand the previous blocks, probably there are things I actually don’t yet fully…
So I tried to follow what you suggested, but it still doesn’t seem to work unfortunately. Maybe I am not using the right variable (ListOfPhotos) as key setting it to a random integer? Is it correct to build three separate lists for photos, longitude and latitude, or should I build one single list? Below the changes I have made. What am I still doing wrong?
You are using the same variable used for the List Of Photos as a variable to store the random number. You need to create a different variable for this purpose and use it subsequently to select the row.
You are using the List Block where you should not. These variables are already initialized as lists therefore remove the block of the list with the gear icon.
Thanks so much, Muneer. I have made the fixes. Certainly looks more logical and simpler that way!
Do I need to link the list of keys to the Airtable as well and then loop through it as for the other variables? The Airtable includes a primary column with automatically generated integers. Or do I simply set that variable to a list of numbers from 1 to x in the blocks part?
It still doesn’t work unfortunately. It returns an error when I test it.
Your next step should be to add a block that says initialize app variable random number. Leave the right side empty (you don’t have to give it a starting value).
Then, after the loop, where you are getting a random integer, use a block that says set app variable random number to and connect it to the random integer block. Finally, use app random number for the get # value in each of the in list blocks.
Thank you @domhnallohanlon, @tatiang, and muneer. I have made it work now! The functionality works perfectly and retrieves a photo together with its location on the map. Really wonderful to have this problem solved now!
Sorry, I just tried to recreate the solution for a similar problem, displaying only a random photo with its description. The user should click on the button to generate a new random photo and label.
It all works fine, except that the photo gets stuck on the random number generated when the screen opens. Clicking on the button does not generate a new photo and label.
When I simply change to for example “random integer from 1 to 30” instead of “app variable ListAllRows1”, it works. So somehow there is a problem with the list. Do I need to create a new one?
If you assign the length of list app variable listAllRows1 to a label’s text when clicking Button1, what is the value you see? Is it 30? Is it something else?
Do you know how to create a function in Thunkable? If so, move these blocks from the when Slides Opens section to a function and then call the function where you have those blocks in the when Slides Opens section and the when Button1 Click section (that is, replace those blocks with the function call) and see if that makes a difference:
This is a common mistake. app variable ListOfPhotos1 is already a list. You don’t need to add the [gear]list block to it. The problem is that you are getting the length of a list with ONE item. That item is app variable ListOfPhotos1. So you’re basically telling Thunkable that you want the length of a list of a list. Anyway, remove the gear/list block and it should work fine.