Italian ExecuteListViewWithBlob - Piccola modifica personale

Ennesima77

Member
Licensed User
Longtime User
Visto che stò chiedendo molte cose al forum mi sembrava giusto condividera una mia piccola modifica fatta al modulo DBUtils

B4X:
Sub ExecuteListViewWithBlob(SQL As SQL, Query As String, StringArgs() As String, Limit As Int,  _
   ListView1 As ListView, TwoLines As Boolean, BlobCol As String, ValueCol As String)
   ListView1.Clear
   Dim Table As Cursor, bmpMom As Bitmap 
   Table = SQL.ExecQuery(Query)
   
   For i = 0 To Table.RowCount - 1
      Table.Position=i
      If Table.GetBlob( BlobCol) = Null Then
         bmpMom.InitializeMutable (100,100)
      Else
          Dim Buffer() As Byte 'declare an empty byte array
          Buffer = Table.GetBlob( BlobCol)
         Dim InputStream1 As InputStream
          InputStream1.InitializeFromBytesArray(Buffer, 0, Buffer.Length)
          
          bmpMom.Initialize2(InputStream1)
       End If
       
      If ValueCol = Null Then
         ListView1.AddTwoLinesAndBitmap(Table.GetString2( 0), Table.GetString2(1), bmpMom )
      Else
         ListView1.AddTwoLinesAndBitmap2(Table.GetString2( 0), Table.GetString2(1), bmpMom, Table.GetString(ValueCol) )
      End If
      
   Next
   
   
End Sub

Si tratta in pratica della stessa funzione per riempire un ListView da un DB SQL in più permette di inserire un immagine indicando la colonna in cui si trova il BLOB nell'SQL. Se il record non contiene un BLOB o il BLOB è nullo viene creata in automatico un'immagine trasparente che non sfalza l'andamento delle righe del ListView.

Inoltre è possibile indicare quale colonna contenga il valore da associare alle singole righe.

Unica limitazione: la stringa SQL deve essere scritta in modo che le prime due colonne siano quelle che devono andare nella prima e seconda riga del ListView, ad esempio:

B4X:
Select FirstName, SecondName, BlobCol, IDCol from persone.........

Nel ListView La prima riga sarà il FirstName la seconda il SecondName.


Spero che sia utile.
 
Last edited:
Top