Italian Array di Bitmap

Sberla

Active Member
Licensed User
Salve ragazzi vorrei creare una lista di Bitmap e poi vorrei farmi tornare la bitmap che mi serve passandogli solo l'elemento.

B4X:
Dim pippo(3) As Bitmap
pippo(0).Initialize(File.DirAssets, "a.jpg")
pippo(1).Initialize(File.DirAssets, "b.jpg")
pippo(2).Initialize(File.DirAssets, "c.jpg")
poi se voglio la seconda immagine e assegnarla in una nuova variabile fare così:

B4X:
Dim pluto As Bitmap
pluto=pippo(1)
Non so perché non mi funziona. Sto sbagliando qualcosa secondo voi?
 

imgsimonebiliato

Well-Known Member
Licensed User
Dichiari una variabile come map (btm) e la carichi con una lista che contiene i nomi dei file immagine contenuti nella cartella (nel mio codice i file .png).
Fai un ciclo e ad ogni giro, inizializzi una bitmap con il nome dell'immagine corrispondente.

B4X:
Private btm As Map
Private l As List
Private i As Int
Private f As String

l = File.ListFiles ( File.DirAssets )

For i = 0 To l.Size - 1
    f = l.Get ( i )
    If f.EndsWith ( ".png" ) Then
        Dim b As Bitmap
        b.Initialize( File.DirAssets , f )

        btm.Put ( f.SubString2 ( 0 , f.Length - 4 ) , b )
    End If
Next
Ora hai la lista e basta che ricerchi il nome dell'immagine che ti serve

B4X:
If btm.ContainsKey ( "pippo" ) Then
   Return btm.Get ( "pippo" )
 

Sberla

Active Member
Licensed User
Dopo aver creato l'array di Bitmap lo inserisco in un listview:

B4X:
Dim Start As Int
       
For Start=0 To 10
    lvtavoli.AddTwoLinesAndBitmap("a", "b",pippo(1))
Next
In questo ciclo in base a quello che voglio caricare, nel primo row voglio la 1 immagine nella seconda la terza...in base a come stanno caricatate, non so se mi sono spiegato. Arriva al "AddTwoLinesAndBitmap" e si chiude l'app. Non capisco perchè si chiude
 

imgsimonebiliato

Well-Known Member
Licensed User
ma se usi il codice che ti ho scritto?
 

Sberla

Active Member
Licensed User
Si devo fare una prova e vediamo se funziona. Nel Listview posso inserire il Tag del relativo row? vorrei salvarmi un valore e poi leggerlo. Sto provando con listview.Tag, ma non riesco a leggerlo o a scriverlo.

B4X:
Listview.Tag(Listview.size-1)="1"
poi per andare a rileggerlo:

B4X:
Listview.Tag(Listview.size-1)
posso fare una cosa del genere?
 

imgsimonebiliato

Well-Known Member
Licensed User
Non so dirti se funziona.
Ma ti serve il tag? Se conosci il nome dell'immagine che devi tirare fuori, allora basta che lo leggi dalla map
 

Sberla

Active Member
Licensed User
Mi serve oltre al nome dell'immagine che userò il map come mi hai spiegato, un valore di ogni row così da poterli differenziare in caso 2 o più row avessero lo stesso nome o stessa immagine.
 

imgsimonebiliato

Well-Known Member
Licensed User
Allora sulla map, con la coppia value - key, su value metti l'immagine e su key metti il valore della row
 
Top