You might setup a scroll view in Unity with NGUI in order to show a list of items. You might also add a UI Grid component to the scroll view in order to organize the elements on the fly.
The children of the scroll view object are easily added, but strange things tend to happen when children are taken away and added back. Left alone, NGUI will try to stack the children with no grid alignment. This is easily fixed by setting the repositionNow variable to true after changing the children. The next problem that arises is that the scrollbar will not update to reflect the changed scroll view. I tried a number of fuctions that update and reset the position of the scroll view and scrollbar and found simply manually scrolling the scroll view with the Scroll function by a small amount will force scrollbar to update accordingly.
scrollView.GetComponent<UIGrid>().repositionNow = true;