grid view with viewholder pattern and listeners