/** * galaxy inc. * meetup client for android */ package com.galaxy.meetup.client.android.ui.fragments; import android.os.Bundle; import android.view.LayoutInflater; import android.view.View; import android.view.ViewGroup; import android.widget.AbsListView; import android.widget.AbsListView.OnScrollListener; import android.widget.ListView; import com.galaxy.meetup.client.android.EsCursorAdapter; /** * * @author sihai * */ public class EsListFragment extends EsFragment implements OnScrollListener { protected EsCursorAdapter mAdapter; protected AbsListView mListView; private int mPrevScrollItemCount; private int mPrevScrollPosition; private int mScrollOffset; private int mScrollPos; EsListFragment() { mPrevScrollPosition = -1; mPrevScrollItemCount = -1; } protected final boolean isEmpty() { boolean flag; if(mAdapter == null || mAdapter.getCursor() == null || mAdapter.getCount() == 0) flag = true; else flag = false; return flag; } public void onCreate(Bundle bundle) { super.onCreate(bundle); if(bundle != null) { mScrollPos = bundle.getInt("scroll_pos"); mScrollOffset = bundle.getInt("scroll_off"); } else { mScrollPos = 0; mScrollOffset = 0; } } public View onCreateView(LayoutInflater layoutinflater, ViewGroup viewgroup, Bundle bundle, int i) { View view = super.onCreateView(layoutinflater, viewgroup, bundle, i); mListView = (AbsListView)view.findViewById(0x102000a); mListView.setOnScrollListener(this); return view; } public void onDestroyView() { super.onDestroyView(); if(mListView != null) { mListView.setOnScrollListener(null); mListView = null; } } public void onPause() { super.onPause(); if(mAdapter != null && mAdapter.getCursor() != null) { EsCursorAdapter _tmp = mAdapter; EsCursorAdapter.onPause(); } } public void onResume() { super.onResume(); if(mAdapter != null && mAdapter.getCursor() != null) mAdapter.onResume(); } public void onSaveInstanceState(Bundle bundle) { super.onSaveInstanceState(bundle); if(!getActivity().isFinishing() && mListView != null) { if(mListView != null) { mScrollPos = mListView.getFirstVisiblePosition(); if(mAdapter != null) { View view = mListView.getChildAt(0); if(view != null) mScrollOffset = view.getTop(); else mScrollOffset = 0; } else { mScrollOffset = 0; } } bundle.putInt("scroll_pos", mScrollPos); bundle.putInt("scroll_off", mScrollOffset); } } public void onScroll(AbsListView abslistview, int i, int j, int k) { if(k > 0) { int l = i + j; if(l >= k && l == mPrevScrollPosition) { int _tmp = mPrevScrollItemCount; } mPrevScrollPosition = l; mPrevScrollItemCount = k; } } public void onScrollStateChanged(AbsListView abslistview, int i) { } protected final void restoreScrollPosition() { if(mListView != null && (mListView instanceof ListView) && (mScrollOffset != 0 || mScrollPos != 0)) { ((ListView)mListView).setSelectionFromTop(mScrollPos, mScrollOffset); mScrollPos = 0; mScrollOffset = 0; } } }