Android + json == NullPointerException
1) Volley вызывает Listener на главном потоке (а не на worker потоке, который делал запрос)
2) Вы циклом ожидания заблокировали главный поток и поэтому Volley не смог вызвать ваш листнер (изза особенностей работы главного потока). А значит выхода из цикла не будет никогда - live-lock.
3) Т.к. onResponse уже на главном потоке, то никто не мешает там же отобразить результат в ГУИ.
4) Парсить жсон на главном потоке очень плохо.
Я добавил:try{
     arrayList.add(map);
     Log.d(LOG_TAG, "(map): " + map.values());
     Log.d(LOG_TAG, "arrayList: " + String.valueOf(arrayList.size()));
}catch (Exception e) {
     Log.e(LOG_TAG, "arrayList.add(map): ERROR");
     e.printStackTrace();
}
в результате в логе(последняя строка):(map): [-61794185, <тут_url>, <тут_текст>]
arrayList: 271
т. е. в него пришло 271 значение... проблема в том, что они удаляются и в момент, когда я вызывал Log.d(LOG_TAG, String.valueOf(arrayList.size())); arrayList пуст...