Gridview:DrawCell Odd behavior

,

I'm having an issue with the images in my gridview. Some of the images don't move to the correct location until I press down.

Has anyone else also encountered this type of issue?

Here is the code


local upgradesFuelImage = gfx.imagetable.new(UpgradesFuel)

local images = {
	gfx.imagetable.new(UpgradesFuel),
	gfx.imagetable.new(UpgradesEfficiency),
	gfx.imagetable.new(UpgradesSpeed),
	gfx.image.new(UpgradesBrickBreaker),
	gfx.imagetable.new(UpgradesFeed),
	gfx.imagetable.new(UpgradesShredder)
}

local upgradeSprites = {{"o","0"},{"0","0"},{"0","0"},{"0","0"}}

function showShopUpgrades()
	clearScreen()

	print("########## TEST 1 #########")
	selected = true

	buttons={
		Button(77,226,ButtonSize.Large,"Back",true)
	}

	upgrades = { {"Fuel", "Fuel"}, {"Fuel", "Fuel"}, {"Fuel", "Fuel"},{"Fuel", "Fuel"}}

	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)



	showGridView = true

	print("########## TEST 2 #########")
	--##### Setting Up upgrade Sprites #####

	upgradeSprites[1][1] = gfx.sprite.new(upgradesFuelImage[1])
	upgradeSprites[1][1]:setZIndex(Layers.Layer1Middle)
	upgradeSprites[1][1]:add()

	upgradeSprites[1][2] = gfx.sprite.new(upgradesFuelImage[1])
	upgradeSprites[1][2]:setZIndex(Layers.Layer1Middle)
	upgradeSprites[1][2]:add()

	upgradeSprites[2][1] = gfx.sprite.new(upgradesBrickBreakerImage)
	upgradeSprites[2][1]:setZIndex(Layers.Layer1Middle)
	upgradeSprites[2][1]:add()

	upgradeSprites[2][2] = gfx.sprite.new(upgradesFuelImage[1])
	upgradeSprites[2][2]:setZIndex(Layers.Layer1Middle)
	upgradeSprites[2][2]:add()

	upgradeSprites[3][1] = gfx.sprite.new(upgradesFuelImage[1])
	upgradeSprites[3][1]:setZIndex(Layers.Layer1Middle)
	upgradeSprites[3][1]:moveTo(-100,0)
	upgradeSprites[3][1]:add()

	upgradeSprites[3][2] = gfx.sprite.new(upgradesFuelImage[1])
	upgradeSprites[3][2]:setZIndex(Layers.Layer1Middle)
	upgradeSprites[3][2]:moveTo(-100,0)
	upgradeSprites[3][2]:add()

	-- TEST
	upgradeSprites[4][1] = gfx.sprite.new(upgradesFuelImage[1])
	upgradeSprites[4][1]:setZIndex(Layers.Layer1Middle)
	upgradeSprites[4][1]:moveTo(-100,0)
	upgradeSprites[4][1]:add()

	upgradeSprites[4][2] = gfx.sprite.new(upgradesFuelImage[1])
	upgradeSprites[4][2]:setZIndex(Layers.Layer1Middle)
	upgradeSprites[4][2]:moveTo(-100,0)
	upgradeSprites[4][2]:add()

	function gridview:drawCell(section, row, column, selected, x, y, width, height)

			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

	gridviewSprite = gfx.sprite.new()
	gridviewSprite:setCenter(0, 0)
	gridviewSprite:moveTo(pdEdges.Left+4, pdEdges.Top + 10)
	gridviewSprite:add()
end

Here is a gif of the problem.
Odd Behavior

I'm rusty with my Grid Views... but do sprites need to be used for what you're doing? Could you just render images into cells without the sprite step?

er... maybe, but I don't understand O....o. Could you give me an example of what you mean?

Here's an example project with a grid view I made a while ago, that draws images into the cells in :drawCell. No sprites involved:

It seems like you may be putting images into sprites that may not need to be—you can just draw them into the gridview directly.

Disclaimer: it has been a while, and I didn't go through your code in detail!

(Sprites are useful to overlay on other things, and my example project DOES use a sprite in that way to magnify the chosen image if you hit (A)—but that's separate from the grid view.)

I kind of see what is happening here. Although I am using imagetable... I suppose it doesn't matter as long as I can call the right image. It just seems like everyone else has figured this out and I'm still lost on how it's pulled off O.....o