preserve scroll position across recreation of list adapters

This commit is contained in:
Eric House 2014-06-12 06:51:17 -07:00
parent ac2c960ef5
commit f375defc0b
2 changed files with 14 additions and 7 deletions

View file

@ -71,7 +71,6 @@ public class DictsDelegate extends ListDelegateBase
private String m_downloadStr;
private ListView m_listView;
private String[] m_locNames;
private DictListAdapter m_adapter;
private HashMap<String, XWListItem> m_selDicts;
private String m_origTitle;
@ -600,8 +599,13 @@ public class DictsDelegate extends ListDelegateBase
{
m_langs = DictLangCache.listLangs( m_activity );
Arrays.sort( m_langs );
m_adapter = new DictListAdapter( m_activity );
m_activity.setListAdapter( m_adapter );
int pos = m_listView.getFirstVisiblePosition();
View child = m_listView.getChildAt( 0 );
int top = (child == null) ? 0 : child.getTop();
setListAdapter( new DictListAdapter( m_activity ) );
m_listView.setSelectionFromTop( pos, top );
m_selDicts = new HashMap<String, XWListItem>();
}

View file

@ -47,7 +47,6 @@ public class RemoteDictsDelegate extends ListDelegateBase
implements GroupStateListener, SelectableItem,
DwnldDelegate.DownloadFinishedListener {
private ListActivity m_activity;
private ListView m_listView;
private boolean[] m_expanded;
private String[] m_langNames;
private static enum DictState { AVAILABLE, INSTALLED, NEEDS_UPDATE };
@ -74,7 +73,6 @@ public class RemoteDictsDelegate extends ListDelegateBase
protected void init( Bundle savedInstanceState )
{
setContentView( R.layout.remote_dicts );
m_listView = getListView();
JSONObject params = new JSONObject(); // empty for now
m_origTitle = getTitle();
@ -186,8 +184,13 @@ public class RemoteDictsDelegate extends ListDelegateBase
private void mkListAdapter()
{
RDListAdapter adapter = new RDListAdapter();
setListAdapter( adapter );
ListView listView = getListView();
int pos = listView.getFirstVisiblePosition();
View child = listView.getChildAt( 0 );
int top = (child == null) ? 0 : child.getTop();
setListAdapter( new RDListAdapter() );
listView.setSelectionFromTop( pos, top );
}
private void setTitleBar()