Такой подход, как у Вас - неправильный.
За содержимое списка отвечает адаптер, и изменения этого содержимого из других мест приведет к неопределённому отображению элементов.
Вам надо в адаптере определить метод:
updateImage(int position, int imageResId);
В этом методе необходимо запоминать новую картинку для соответствующей позиции и вызывать метод notifyDatasetChanged() , чтобы обновить содержимое списка.
После этого, адаптер начнет обновление, и Вы сможете показать новую картинку, которую ранее сохранили.
По Вашему коду видно что Вы не разобрались с тем как работает ListView/RecyclerView, прочитайте какой-то туториал по этим компонентам и тогда Вам станет ясно в чем была проблема.