Android Question Table View fill from list

Declan

Well-Known Member
Licensed User
Longtime User
I am using the following code to fill a TableView from a List:
Code:
Sub ShowSalesByStoreByRegion
    Dim cursor1 As Cursor
    Dim txt As String
    Dim MySPList As List
    MySPList.Initialize
   
        Table1.ClearAll
   
    txt = "SELECT [Group] AS StoreGROUP, [Store] AS STORE, [Line Total] AS LINETOTAL, [Total Sales] AS TOTALSALES,  [Budget] AS BUDGET, [Last Year] AS LASTYEAR, [GP %] AS GP, [# Of Trans] AS NUMOFTRANS, [UPT] AS UPT, [AVT] AS AVT, [Ft Count] AS FOOTCOUNT, [My Price] AS MYPRICE FROM tableSP2"
    cursor1=SQL1.ExecQuery(txt)
    For i=0 To cursor1.RowCount-1
        cursor1.Position=i
        Dim MY_GROUP As String = cursor1.GetString("StoreGROUP")
        Dim MY_STORE As String = cursor1.GetString("STORE")
        Dim MY_UPT As String = cursor1.GetString("UPT")
        Dim MY_AVT As String = cursor1.GetString("AVT")
        Dim MY_MYPRICE As String = cursor1.GetDouble("MYPRICE")
        Dim MY_NUMOFTRANS As String = cursor1.GetDouble("NUMOFTRANS")
        Dim MY_BUDGET As String =  cursor1.GetDouble("BUDGET")
        Dim MY_TOTALSALES As String = NumberFormat2(cursor1.GetDouble("TOTALSALES"), 1,2, 2,True) 
        Dim MY_LASTYEAR As String =cursor1.GetDouble("LASTYEAR")
        Dim MY_LINETOTAL As String = cursor1.GetDouble("LINETOTAL")
        Dim MY_GP As String = NumberFormat2(cursor1.GetDouble("GP"), 1,2, 2,True)
'        Dim MY_PCRATE As String = NumberFormat2(cursor1.GetDouble("PCRATE"), 1,2, 2,True)   
        Dim MY_FOOTCOUNT As String = cursor1.GetDouble("FOOTCOUNT")
        Dim MY_BUDGETPercent As Double = (MY_LINETOTAL / MY_BUDGET)  'PWSaleDetailLineTotal / Budget
        Dim MY_GROWTHPercent As Double = (MY_LINETOTAL / MY_LASTYEAR) -1 '(PWSaleDetailLineTotal / LastYear)-1
        Dim MY_FcCONPercent As Double = (MY_NUMOFTRANS / MY_FOOTCOUNT) 'NumerofTrans / Foot Counts
        Dim MY_PRICEPercent As Double = (MY_MYPRICE / MY_LINETOTAL)  'MyPrice / PWSaleDetailLineTotal
       
'        MySPList.Add(MY_GROUP & TAB & MY_STORE & TAB & MY_TOTALSALES & TAB & MY_BUDGET & TAB & MY_BUDGETPercent & TAB & MY_LASTYEAR & TAB & MY_GROWTHPercent & TAB & MY_GP & TAB &  MY_NUMOFTRANS & TAB & MY_UPT  & TAB & MY_AVT & TAB & MY_FOOTCOUNT & TAB & MY_FcCONPercent & TAB & MY_MYPRICE & TAB & MY_PRICEPercent)
        MySPList.Add(MY_GROUP &  MY_STORE &  MY_TOTALSALES  & MY_BUDGET  & MY_BUDGETPercent  & MY_LASTYEAR  & MY_GROWTHPercent &  MY_GP &   MY_NUMOFTRANS  & MY_UPT  & MY_AVT  & MY_FOOTCOUNT  & MY_FcCONPercent & MY_MYPRICE  & MY_PRICEPercent)

          Dim tf() As Typeface
            tf = Array As Typeface(Typeface.DEFAULT, Typeface.DEFAULT_BOLD, Typeface.DEFAULT, Typeface.DEFAULT_BOLD, Typeface.DEFAULT)
            Table1.SetTypeFaces(tf)
            Table1.SetHeader(Array As String("Group", "Store", "Total Sales", "Budget", "Budget %", "Last Year", "Growth %", "GP %", "# of Trans", "UPT", "AVT", "Ft Count", "Fc Con %", "My Price", "My Price %"))
            Table1.SetColumnsWidths(Array As Int(25%x, 25%x, 25%x, 25%x, 25%x,25%x, 25%x, 25%x, 25%x, 25%x,25%x, 25%x, 25%x, 25%x, 25%x))
            For i=0 To MySPList.Size -1
                Table1.AddRow(Array As String(MY_GROUP, MY_STORE, MY_TOTALSALES, MY_BUDGET, MY_BUDGETPercent, MY_LASTYEAR, MY_GROWTHPercent, MY_GP, MY_NUMOFTRANS, MY_UPT, MY_AVT, MY_FOOTCOUNT, MY_FcCONPercent, MY_MYPRICE, MY_PRICEPercent))
            Next
   
    Next
    Table1.Visible = True
End Sub

The problems I have are:
The Table does not clear, but appends data
How am I able to increase the Height of the Table?
 
You are using the Table1 class the wrong way.
You should set Table1.SetTypeFaces, Table1.SetHeader and Table1.SetColumnsWidths only once, not in the For/Next loop !
You must replace :
Code:
For i=0 To MySPList.Size -1
    Table1.AddRow(Array As String(MY_GROUP, MY_STORE, MY_TOTALSALES, MY_BUDGET, MY_BUDGETPercent, MY_LASTYEAR, MY_GROWTHPercent, MY_GP, MY_NUMOFTRANS, MY_UPT, MY_AVT, MY_FOOTCOUNT, MY_FcCONPercent, MY_MYPRICE, MY_PRICEPercent))
Next
simply by:
Code:
Table1.AddRow(Array As String(MY_GROUP, MY_STORE, MY_TOTALSALES, MY_BUDGET, MY_BUDGETPercent, MY_LASTYEAR, MY_GROWTHPercent, MY_GP, MY_NUMOFTRANS, MY_UPT, MY_AVT, MY_FOOTCOUNT, MY_FcCONPercent, MY_MYPRICE, MY_PRICEPercent))
Another problem:
You have a For/Next loop in another For/Next loop with the same variable i !!!
 
Upvote 0
Table1.AddRow(ArrayAsString(MY_GROUP, MY_STORE, MY_TOTALSALES, MY_BUDGET, MY_BUDGETPercent, MY_LASTYEAR, MY_GROWTHPercent, MY_GP, MY_NUMOFTRANS, MY_UPT, MY_AVT, MY_FOOTCOUNT, MY_FcCONPercent, MY_MYPRICE, MY_PRICEPercent))
I now need to total certain columns and append these records to the bottom of the Table
Something like:
Code:
Table1.AddRow(Array As String(MY_GROUP, MY_STORE, MY_TOTALSALES, MY_BUDGET, MY_BUDGETPercent, MY_LASTYEAR, MY_GROWTHPercent, MY_GP, MY_NUMOFTRANS, MY_UPT, MY_AVT, MY_FOOTCOUNT, MY_FcCONPercent, MY_MYPRICE, MY_PRICEPercent))

Table1.AddRow(Array As String("Totals:", MY_TOTALSALES, MY_MYPRICE))
Is it possible to have "& TAB &" that will enable me to get the totals to display in the correct column?
For instance: "Totals:" will be in the first column (col(0)), "MY_TOTALSALES" will be in the third column (col(2))
 
Upvote 0
You might want to reserve some space below table1 and create a second table on a panel created by code. Just to give you an idea something like this and you can adjust the placement of the columns and table. Perhaps, @klaus has a better idea:
Code:
Dim p2 As Panel   'in globals

    p2.Initialize("")
    Activity.AddView(p2, 20dip, 100%y-60dip, 100%x - 40dip, 60dip)
    Table2.Initialize(Me,"table2")
    Table2.InitializeTable(2,Gravity.CENTER_HORIZONTAL, True)
    Table2.AddToActivity(p2, 0, 0, p2.Width, p2.Height)
    Dim MyQuery As String ="SELECT 'TOTALS:' as TOT, sum(MY_TOTALSALES) as TS FROM tableSP2"
    Table2.LoadSQLiteDB(SQL1,MyQuery,True)
 
Upvote 0
For your totals you can enter a row like you tried but you must enter an empty string in the columns wittout a value like:
Code:
Table1.AddRow(Array As String("Totals:", "", MY_TOTALSALES, "", "", MY_MYPRICE, "", "", ""....))
The number of items in the Array must be equal to the number of columns.
 
Upvote 0
@Mahares & @klaus
Thanks guys - I went with Klaus's recommendation
Found it easier to assemble the data in the loop, then display the array in the list instead of multiple SQL queries (due to the data I need)
 
Upvote 0
Back
Top