Раз уж начали разбирать код, у меня вопрос по этой строчке:
reader = new BufferedReader(new InputStreamReader(System.in));
Можно ли как-то без постоянного создания ссылок ?
Я пробовал использовать adapter.notifyDataSetChanged(). В моем случае и изменение данных и прорисовка происходили через некоторое время или после прокрутки списка.