У Вас есть условие: if( convertView == null), из-за элементы на экране заполняются только когда создаются в первый раз. ListView переиспользует строки, а не создаёт каждый раз заново, т.е. если в списке 50 строк, а на экране помещается 5, то будет создано 7 строк и при уходе с экрана они будут использоваться для других элементов. В этом случае getView вызовется, а convertView не будет null, а будет заполнено старыми данными.
Поэтому данные нужно записывать во view при каждом вызове getView.