I just took a look at the tie magic used by SimpleList and the problem is that it isn't updated by the widget (which could of course be monitored by subclassing SimpleList) but simply queries the widget for each lookup you do in the list. Thus option 2 is impossible due to the implementation of SimpleList.
So you need to go for option 1, which is also easier and simpler to implement anyway.