In this example you can find a short example which shuffles a playlist (mp3´s for ex.).
Here i´m using the alphabet (A to Z)
The mainpart of this example are the following two subs
This sub SHUFFLES a LIST. It needs a list given as parameter and it returns a new version of the given list. In example it is used like
And the second sub gets the first item of this list. and the global list is changed
get first item of list and remove it from list
put the removed item to end of list
the sub returns the item to the caller
I dont know whether it´s useful in this example but i think the principle of ramdonly shuffles LISTs could be interesting to some of you. So i decided to create this example-thread here
Feel free to add your code-suggestions to this and reshare your knowledge
Here i´m using the alphabet (A to Z)
B4X:
Sub Process_Globals
'These global variables will be declared once when the application starts.
'These variables can be accessed from all modules.
Dim playlist As List
End Sub
Sub Globals
'These global variables will be redeclared each time the activity is created.
'These variables can only be accessed from this module.
Private lv As ListView
Private ButtonShuffle As Button
Private ButtonPlay As Button
End Sub
Sub Activity_Create(FirstTime As Boolean)
'Do not forget to load the layout file created with the visual designer. For example:
Activity.LoadLayout("main")
playlist.Initialize
playlist.Add("A")
playlist.Add("B")
playlist.Add("C")
playlist.Add("D")
playlist.Add("E")
playlist.Add("F")
playlist.Add("G")
playlist.Add("H")
playlist.Add("I")
playlist.Add("J")
playlist.Add("K")
playlist.Add("L")
playlist.Add("M")
playlist.Add("N")
playlist.Add("O")
playlist.Add("P")
playlist.Add("Q")
playlist.Add("R")
playlist.Add("S")
playlist.Add("T")
playlist.Add("U")
playlist.Add("V")
playlist.Add("W")
playlist.Add("X")
playlist.Add("Y")
playlist.Add("Z")
lv.Clear
Log("===== PlayList (create) =========")
For i = 0 To playlist.Size-1
lv.AddSingleLine(playlist.Get(i))
Log(playlist.Get(i))
Next
Log("=================================")
End Sub
Sub ShuffleList(pl As List) As List
For i = pl.Size - 1 To 0 Step -1
Dim j As Int
Dim k As Object
j = Rnd(0, i + 1)
k = pl.Get(j)
pl.Set(j,pl.Get(i))
pl.Set(i,k)
Next
Return pl
End Sub
Sub GetNextFromPL As String
Dim t As Object
Dim res As String
t = playlist.Get(0)
res = t
playlist.RemoveAt(0)
playlist.Add(t)
Return res
End Sub
Sub ButtonPlay_Click
ToastMessageShow("Next is "&GetNextFromPL,True)
lv.Clear
For i = 0 To playlist.Size-1
lv.AddSingleLine(playlist.Get(i))
Log(playlist.Get(i))
Next
End Sub
Sub lv_ItemClick (Position As Int, Value As Object)
End Sub
Sub ButtonShuffle_Click
playlist = ShuffleList(playlist)
Log("===== PlayList (shuffle) =========")
lv.Clear
For i = 0 To playlist.Size-1
lv.AddSingleLine(playlist.Get(i))
Log(playlist.Get(i))
Next
Log("=================================")
End Sub
The mainpart of this example are the following two subs
B4X:
Sub ShuffleList(pl As List) As List
For i = pl.Size - 1 To 0 Step -1
Dim j As Int
Dim k As Object
j = Rnd(0, i + 1)
k = pl.Get(j)
pl.Set(j,pl.Get(i))
pl.Set(i,k)
Next
Return pl
End Sub
This sub SHUFFLES a LIST. It needs a list given as parameter and it returns a new version of the given list. In example it is used like
B4X:
playlist = ShuffleList(playlist)
And the second sub gets the first item of this list. and the global list is changed
get first item of list and remove it from list
put the removed item to end of list
the sub returns the item to the caller
B4X:
Sub GetNextFromPL As String
Dim t As Object
Dim res As String
t = playlist.Get(0)
res = t
playlist.RemoveAt(0)
playlist.Add(t)
Return res
End Sub
I dont know whether it´s useful in this example but i think the principle of ramdonly shuffles LISTs could be interesting to some of you. So i decided to create this example-thread here
Feel free to add your code-suggestions to this and reshare your knowledge