Вы можете попробовать 2 способа, подобные этим:
Решение А:
mListView.post(new Runnable() {
@Override
public void run() {
if (null != mListView) {
mListView.clearFocus();
mListView.requestFocusFromTouch();
mListView.setSelection(0);
}
}
});
В некоторых сложных ситуациях это решение принесет некоторые новые проблемы в Android 8.x.
Кроме того, оно может вызвать неожиданное onFocusChange ().
Решение B:
Определить пользовательский вид расширяет ListView. Переопределите метод handleDataChanged (). Затем setSelection (0). В CustomListView:
@Override
protected void handleDataChanged() {
super.handleDataChanged();
if (null != mHandleDataChangedListener){
mHandleDataChangedListener.onChanged();
}
}
HandleDataChangedListener mHandleDataChangedListener;
public void setHandleDataChangedListener(HandleDataChangedListener handleDataChangedListener) {
this.mHandleDataChangedListener = handleDataChangedListener;
}
public interface HandleDataChangedListener{
void onChanged();
}
В деятельности:
mListView.setHandleDataChangedListener(new CustomListView.HandleDataChangedListener() {
@Override
public void onChanged() {
mListView.setHandleDataChangedListener(null);
mListView.setSelection(0);
}
});
mAdapter.notifyDataSetChanged();
Хорошо, вот и все.