当前位置: 代码迷 >> Android >> Android listView scroll 回复滚动位置
  详细解决方案

Android listView scroll 回复滚动位置

热度:341   发布时间:2016-04-28 07:58:01.0
Android listView scroll 恢复滚动位置

相信大家尝试过许多方法恢复滚动位置,本人也找了许多方法,唯有这个方法好用,下面把代码贴出来

声明两个变量

private int mPosition;private int lvChildTop;

pause , resume方法

        @Override	public void onPause() {		// TODO Auto-generated method stub		super.onPause();		SharedPreferences mySharedPreferences = activity.getSharedPreferences(MY_PREFS, Activity.MODE_PRIVATE);		SharedPreferences.Editor edit = mySharedPreferences.edit();		edit.putInt("mPositionChildTop", lvChildTop);		edit.putInt("mPosition", mPosition);		edit.commit();	}	@Override	public void onResume() {		// TODO Auto-generated method stub		super.onResume();		SharedPreferences mySharedPreferences = activity.getSharedPreferences(MY_PREFS, Activity.MODE_PRIVATE); // MY_PREFES 是声明的字符串		lvChildTop = mySharedPreferences.getInt("mPositionChildTop", 0);		mPosition = mySharedPreferences.getInt("mPosition", 0);		listMessage.setSelectionFromTop(mPosition, lvChildTop); // listMessage 是listview ,	}


listview 的监听事件

private OnScrollListener lvScrollListener = new OnScrollListener() {		@Override		public void onScrollStateChanged(AbsListView view, int scrollState) {			// TODO Auto-generated method stub			// 不滚动时保存当前滚动到的位置			if (scrollState == OnScrollListener.SCROLL_STATE_IDLE) {				mPosition = listMessage.getFirstVisiblePosition();				View v = listMessage.getChildAt(0);				lvChildTop = (v == null) ? 0 : v.getTop();			}		}		@Override		public void onScroll(AbsListView view, int firstVisibleItem, int visibleItemCount, int totalItemCount) {			// TODO Auto-generated method stub		}	};





  相关解决方案