Not used listboxes yet, but had lots of fun debugging appuifw.Canvas callbacks. It's amazing when they get called by system... Most of the times it's almost logical!
Try to add lots of debugging code into your callbacks and figure out whether you're doing all resizing and redrawing that's needed, when needed and in right order. Try to slow down your computer to actually see how many times everything is redrawn. Shouldn't be too difficult
canvas = appuifw.Canvas(
resize_callback = cb_handle_resize,
redraw_callback = cb_handle_redraw)
Well, good luck! Hoping it's your code and not a bug in pyS60
Btw if you use custom background graphics, you're sure to remember resizing it, too?