Android Question faster programming

andredamen

Active Member
Licensed User
Longtime User
How can i program this faster in a loop?

SetGradientColor(Label5, "TL_BR", Main.kleur2, Main.kleur3, 100dip)
SetGradientColor(Label6, "TL_BR", Main.kleur2, Main.kleur3, 100dip)
SetGradientColor(Label7, "TL_BR", Main.kleur2, Main.kleur3, 100dip)
SetGradientColor(Label8, "TL_BR", Main.kleur2, Main.kleur3, 100dip)
SetGradientColor(Label9, "TL_BR", Main.kleur2, Main.kleur3, 100dip)
SetGradientColor(Label10, "TL_BR", Main.kleur2, Main.kleur3, 100dip)
SetGradientColor(Label11, "TL_BR", Main.kleur2, Main.kleur3, 100dip)
SetGradientColor(Label12, "TL_BR", Main.kleur2, Main.kleur3, 100dip)
SetGradientColor(Label13, "TL_BR", Main.kleur2, Main.kleur3, 100dip)
SetGradientColor(Label14, "TL_BR", Main.kleur2, Main.kleur3, 100dip)
SetGradientColor(Label15, "TL_BR", Main.kleur2, Main.kleur3, 100dip)
SetGradientColor(Label16, "TL_BR", Main.kleur2, Main.kleur3, 100dip)
 

DonManfred

Expert
Licensed User
Longtime User
B4X:
sub SetGradient(lbl as Label, lang as String, color1 as Int, color2 as Int, width as int)
    SetGradientColor(lbl, lang, color1, color2, width)
end sub
i would use an array of the objects (or list) and only call the sub once with all the Items...
 
Upvote 0

Peter Simpson

Expert
Licensed User
Longtime User
Or.
B4X:
'Written on the fly, not tested
    Dim LblArray() As Label = Array As Label (Label1, Label2, Label3, Label4, Label5)

    For Each YourLabel As Label In LblArray
        SetGradientColor(YourLabel, lang, color1, color2, width)
    Next

Edited:
Or again...
B4X:
Sub Activity_Create(FirstTime As Boolean)
    Activity.LoadLayout("Layout")

    Dim LblArray() As Label = Array As Label (Label1, Label2, Label3, Label4, Label5)  'Place your labels in this array

    For Each YourLabel As Label In LblArray
        YourLabel.Background = SetGradientColor
    Next
End Sub

Sub SetGradientColor As GradientDrawable
    Dim GD As GradientDrawable
    Dim Cls(2) As Int
        Cls(0) = Colors.ARGB(255,124,245,239)
        Cls(1) = Colors.ARGB(255,13,142,137)
    GD.Initialize("TOP_BOTTOM", Cls)
    GD.CornerRadius = 8
    Return GD
End Sub


Enjoy...
 
Last edited:
Upvote 0

andredamen

Active Member
Licensed User
Longtime User
Thanks.

Dim LblArray() As Label = Array (Label5 , Label6 , Label7 , Label8 , Label9 , Label10 , Label11 , Label12 , Label13 , Label14 , Label15 , Label16)


These are my labels. I get the following to see in the logger:

snaarkeuze_activity_create (java line: 415)
java.lang.ClassCastException: java.lang.Object[] cannot be cast to anywheresoftware.b4a.objects.LabelWrapper[]
at dbsoftware.zarlon.snaarkeuze._activity_create(snaarkeuze.java:415)
at java.lang.reflect.Method.invoke(Native Method)
at anywheresoftware.b4a.BA.raiseEvent2(BA.java:213)
at dbsoftware.zarlon.snaarkeuze.afterFirstLayout(snaarkeuze.java:105)
at dbsoftware.zarlon.snaarkeuze.access$000(snaarkeuze.java:17)
at dbsoftware.zarlon.snaarkeuze$WaitForLayout.run(snaarkeuze.java:83)
at android.os.Handler.handleCallback(Handler.java:938)
at android.os.Handler.dispatchMessage(Handler.java:99)
at android.os.Looper.loop(Looper.java:246)
at android.app.ActivityThread.main(ActivityThread.java:8512)
at java.lang.reflect.Method.invoke(Native Method)
at com.android.internal.os.RuntimeInit$MethodAndArgsCaller.run(RuntimeInit.java:602)
at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:1130)
java.lang.ClassCastException: java.lang.Object[] cannot be cast to anywheresoftware.b4a.objects.LabelWrapper[]

What went wrong?
 
Upvote 0
Top