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

		}
	};



 



评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值