Italian Creare una Sub con assegnazione

Sberla

Active Member
Licensed User
Salve ragazzi sto creando una classe tipo la ListView.

Vorrei creare una cosa di questo tipo:

B4X:
lista.pippo(0)="pluto"
lista è una variabile di tipo ListView.

Cosa devo creare una Sub? mi fate un esempio?
 

LucaMs

Expert
Licensed User
Non è chiarissimo.

Tu vuoi creare una ListView la quale contenga una ListView?


Prima di ammattire :) hai provato ad usare CustomListView o CheckList (quest'ultima non deve necessariamente presentare delle CheckBox, si può usare come la CustomListView)
 

Sberla

Active Member
Licensed User
Ho una Listview e mi devo salvare altri dati all'interno di questa lista.

Es. ho dei prodotti con relativo prezzo, categoria, id.

Il nome dei prodotti li inserisco normalmente nella ListView con la sub AddSingleLine.
Per ogni row devo salvare le altre informazioni per ogni prodotto (prezzo,categoria,id).

Ora mi serviva una sub (tipo quella scritta sopra) per assegnare a ogni row gli altri valori.
 

LucaMs

Expert
Licensed User
Allora ti consiglierei di crearti una classe che rappresenti il prodotto con tutte le sue caratteristiche (Proprietà della Classe)
e per la visualizzazione una delle due che ti ho già scritto.
Diventa tutto molto semplice.
 

LucaMs

Expert
Licensed User
Al limite, se non vuoi creare una classe (cosa che invece ti consiglio) puoi usare un Type o perfino una Map.

dim mapProdotto as map
mapProdotto.Put("Nome", "Bomba atomica")
mapProdotto.Put("Quantità", 1)
mapProdotto.Put("Prezzo", 123456879123456789)
 

udg

Expert
Licensed User
Concordo con @LucaMs.
Personalmente non l'ho ancora mai utilizzata in questo modo, ma se dai un'occhiata alla definizione della ListView ti accorgi che le varie Addxyz2 ti consentono di abbinare un Object all'elemento che stai inserendo. Nel tuo caso l'object conterrebbe i dati extra da abbinare alla "descrizione".
 

Sberla

Active Member
Licensed User
Vi ringrazio a entrambi, per questo progetto farò come mi avete consigliato. Ma giusto per imparare questo metodo, sapreste come posso creare una cosa del genere?

B4X:
lista.pippo(0)="pluto"
In questo linguaggio non saprei come farlo
 

Sberla

Active Member
Licensed User
in un altro linguaggio lo ho risolverei con le proprietà computate. In pratica sono delle variabili che hanno il metodo GET e SET e quindi richiamando quella variabile puoi settarle o leggerle.

B4X:
Dim pippo As stringa 'Questa variabile facciamo finta che sia computata
Così la setto:
B4X:
pippo="asd"
Così la leggo
B4X:
msgbox(pippo)
Esiste qualcosa del genere in Basic4Android?
 

imgsimonebiliato

Well-Known Member
Licensed User
B4X:
Public Sub GetPippo as string
Return Pippo
end Sub

Public Sub SetPippo ( s as string)
pippo = s
end Sub
 

Sberla

Active Member
Licensed User
B4X:
Public Sub GetPippo as string
Return Pippo
end Sub

Public Sub SetPippo ( s as string)
pippo = s
end Sub
Si così lo so fare :)... per fare quello che serve a me la Sub si dovrebbe chiamare uguale e deve sia leggere che scrivere in base a cosa voglio fare
 

LucaMs

Expert
Licensed User
Si così lo so fare :)... per fare quello che serve a me la Sub si dovrebbe chiamare uguale e deve sia leggere che scrivere in base a cosa voglio fare
Devi semplicemente creare una Classe (leggi il tutorial di Erel).

Una variabile a livello di modulo (Global) che in genere io chiamo con una "m" iniziale (un vecchio consiglio ricevuto dai tempi di VB.Net ;)):

Private mPippo As String

e le "funzioni" Set e Get, che, attenzione, devono iniziare con la lettera minuscola:

Public setPippo(Pippo As String)
mPippo = Pippo
End Sub

Public getPippo As String
Return mPippo
End Sub


Quindi, se la tua classe si chiamasse clsDisneyland:

Dim Disneyland As ClsDisneyland
Disneyland.Initialize
Disneyland.Pippo = "boooo"
log(Disneyland.Pippo)
 

Sberla

Active Member
Licensed User
cioè se metti get e/o set prima di una funzione dichiari quella Sub come lettura e settaggio?
 

coslad

Well-Known Member
Licensed User
non è che Sberla intendeva usare un semplice array multidimensionale ? A volte le cose più basilari funzionano meglio.
Tipo

Dim personaggi_cartoni(1000,3) as string

personaggi_cartoni(1,1)="disney"
personaggi_ cartoni(1,2)="pluto"
personaggi_ cartoni(1,2)="topolino"

personaggi_cartoni(2,1)="little pony"
personaggi_ cartoni(2,2)="raimbowdash"
personaggi_ cartoni(2,2)="pinkiepai"

Ps conosco i little pony perchè ho una figlia piccola
 
Top