I've figured it out! I was confused at first because I trying to follow an example I found in the documentation, this one here.
I was thinking, if it's call a lot a sprite will be added to the display list every time right? Then it would be a memory leak. And it's true X....X, when testing I got up to 4k sprites in my display list, not ideal.
I ended up landing on this here.
function showShopUpgrades()
clearScreen()
bgSetBackgroundBorders(BackgroundBorders.Game)
selected = true
buttons={
Button(77,226,ButtonSize.Large,"Back",true)
}
upgrades = { {"Fuel", "Efficiency"}, {"Brick Breaker", "Speed"}, {"Feed", "Shredder"}}
gridview = pd.ui.gridview.new(0, 32)
print("What is "..#upgrades)
gridview:setNumberOfRows(#upgrades)
gridview:setNumberOfColumns(2)
gridview:setCellPadding(2, 2, 2, 2)
-- gridview.backgroundImage = gfx.nineSlice.new("images/bg/gridBackground", 6, 6, 20, 20)
gridview:setContentInset(5, 5, 5, 5)
gridviewSprite = gfx.sprite.new()
gridviewSprite:setCenter(0, 0)
gridviewSprite:moveTo(pdEdges.Left+4, pdEdges.Top + 10)
gridviewSprite:add()
showGridView = true
--##### Setting Up upgrade Sprites #####
upgradeSprites[1][1] = gfx.sprite.new(upgradesFuelImage[1])
upgradeSprites[1][1]:setZIndex(Layers.Layer1Middle)-- This is just for right now Change later!!!!!!!
upgradeSprites[1][1]:add()
upgradeSprites[1][2] = gfx.sprite.new(upgradesEfficiencyImage[1])
upgradeSprites[1][2]:setZIndex(Layers.Layer1Middle)-- This is just for right now Change later!!!!!!!
upgradeSprites[1][2]:add()
upgradeSprites[2][1] = gfx.sprite.new(upgradesBrickBreakerImage)
upgradeSprites[2][1]:setZIndex(Layers.Layer1Middle)-- This is just for right now Change later!!!!!!!
upgradeSprites[2][1]:add()
upgradeSprites[2][2] = gfx.sprite.new(upgradesSpeedImage[1])
upgradeSprites[2][2]:setZIndex(Layers.Layer1Middle)-- This is just for right now Change later!!!!!!!
upgradeSprites[2][2]:add()
upgradeSprites[3][1] = gfx.sprite.new(upgradesFeedImage[1])
upgradeSprites[3][1]:setZIndex(Layers.Layer1Middle)-- This is just for right now Change later!!!!!!!
upgradeSprites[3][1]:add()
upgradeSprites[3][2] = gfx.sprite.new(upgradesShredderImage[1])
upgradeSprites[3][2]:setZIndex(Layers.Layer1Middle)-- This is just for right now Change later!!!!!!!
upgradeSprites[3][2]:add()
function gridview:drawCell(section, row, column, selected, x, y, width, height)
print("row: "..row.." column: "..column)
--print(gfx.sprite.spriteCount())
upgradeSprites[row][column]:moveTo(x + width + 100, y + (height/2) + 5)
if selected then
gfx.fillRoundRect(x, y, width, height, 4)
gfx.setImageDrawMode(gfx.kDrawModeFillWhite)
else
gfx.setImageDrawMode(gfx.kDrawModeCopy)
end
local fontHeight = gfx.getSystemFont():getHeight()
gfx.drawTextInRect(upgrades[row][column], x, y + (height/2 - fontHeight/2) + 25, width, height, nil, nil, kTextAlignment.center)
end
end
One odd thing though, not to muddy the waters, but I'm getting some overlap the first time I go to the screen, then it changes when I move. Weird right?