I know that this was answered, and you answered, and that was more than a year ago. But the best way to do this is through transcription. For a demonstration, see Android API Demo under Views> Lists> Transcript.
In the list view in XML, you should set the following.
android:stackFromBottom="true" android:transcriptMode="alwaysScroll"
It will always work when you call notifyDataSetChanged() . You can set android:transcriptMode to normal instead if you want to get even better results for chat applications: it will scroll to the bottom only if the last item has already been in sight. Thus, your users can view the previous chat without interruption when other users communicate.
Ribose Aug 10 2018-11-11T00: 00Z
source share