getViewTypeCount должен возвращать количество различных представлений, которые будет использовать ваш GridView.
Этот номер используется внутри Android для оптимизации создания представления.
Если все элементы в вашем виде сетки имеют одинаковый тип, вы должны вернуть 1.
@Override
public int getViewTypeCount() {
return 1;
}
Должен быть хотя бы один тип представления, и ваша реализация, вероятно, возвращает 0. Вот почему вы получаете исключение.