why did i get nulls
The nulls are probably calls to updateItem(...) on empty cells (cells that are out of the range of the number of items currently displayed in the tree). You could check by displaying the value of the "empty" flag.
twice root treeitem
Not sure, but there are really no guarantees as to when or how often the updateItem(...) method will be called. Cells can be reused (e.g. if you scroll, a cell for an item that is no longer displayed might (or might not) be reused to display another item). On the other hand, a new cell could be assigned to an already displayed item if there is reason to do it. The details just depend on the implementation of the TreeView and may change from release to release.
If it's important to you that this happens, you're probably not using the cells as they were intended to be used.