Enhance abstract adapter, move getView to abstract.

Abstract viewholder as well so that subclass can extend and add more UI
element into it.