zoukankan      html  css  js  c++  java
  • 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
    
    		}
    	};





  • 相关阅读:
    [LeetCode] Insert Interval
    java 可变參数
    谈谈单元測试之(二):測试工具 JUnit 3
    我的csdn博客搬家了
    leetcode 229: Majority Element II
    向MapReduce转换:生成用户向量
    《31天成为IT服务达人》最新文件夹
    SD卡读写之FileNotFoundException: /storage/emulated/0object.txt: open failed: ENOENT (No such file or dir
    当写烂代码的人离职之后....
    JavaSE Map的使用
  • 原文地址:https://www.cnblogs.com/james1207/p/3343414.html
Copyright © 2011-2022 走看看