My ListView (StickyListHeadersListView) не сохраняет точную позицию прокрутки. Я это ссылка:Как сохранить позицию прокрутки для моего ListView, использующего CursorAdapter?
Maintain/Save/Restore scroll position when returning to a ListView
Когда пользователь нажимает на элемент в списке, я использую SharedPreferences, чтобы сохранить «индекс» и «сверху» до приложения переходов к деятельности. Когда я вернусь к активности, чтобы вернуться к фрагменту с помощью ListView, список переместится в верхнюю часть первого видимого элемента списка, когда он ушел, но не в точную позицию (т. Е. Если первый видимый элемент обрезается на полпути , он должен быть отключен на полпути при возврате к фрагменту).
Другими словами, смещение не сохраняется. Как я уже сказал, он может сохранить первую видимую позицию, но точный свиток не сохраняется.
mAdapter = new PeopleAdapter(getActivity(), null);
mList = (StickyListHeadersListView) rootView.findViewById(R.id.stickyList);
mList.setAdapter(mAdapter);
mList.setAreHeadersSticky(true);
mList.setDividerHeight(0);
mList.setOnItemClickListener(new AdapterView.OnItemClickListener() {
@Override
public void onItemClick(AdapterView<?> parent, View view, int position, long id) {
Cursor cursor = mAdapter.getCursor();
if (cursor != null && cursor.moveToPosition(position)) {
MainActivity.setIndex(mList.getFirstVisiblePosition());
View v = mList.getListChildAt(0);
int top = (v == null) ? 0 : (v.getTop() - mList.getPaddingTop());
MainActivity.setTop(top);
Intent intent = new Intent(getActivity(), ContactDetailActivity.class);
startActivity(intent);
}
});
После того, как курсор загрузится, я звоню
public void onLoadFinished(Loader<Cursor> loader, Cursor data) {
android.util.Log.i(TAG, "Cursor loaded. (" + data.getCount() + " rows)");
mList.setSelectionFromTop(MainActivity.getIndex(), MainActivity.getTop());
mAdapter.changeCursor(data);
mAdapter.notifyDataSetChanged();
}