@@ -122,6 +122,50 @@ public void onStop() {
122122 recentRepos .saveAsync ();
123123 }
124124
125+ private void updateHeaders (final List <Repository > repos ) {
126+ HeaderFooterListAdapter <?> rootAdapter = getListAdapter ();
127+ if (rootAdapter == null )
128+ return ;
129+
130+ DefaultRepositoryListAdapter adapter = (DefaultRepositoryListAdapter ) rootAdapter
131+ .getWrappedAdapter ();
132+ adapter .clearHeaders ();
133+
134+ char start = 'a' ;
135+ Repository previous = null ;
136+ for (int i = 0 ; i < repos .size (); i ++) {
137+ Repository repository = repos .get (i );
138+
139+ if (recentRepos .contains (repository .getId ())) {
140+ previous = repository ;
141+ continue ;
142+ }
143+
144+ char repoStart = Character .toLowerCase (repository .getName ().charAt (
145+ 0 ));
146+ if (repoStart < start ) {
147+ previous = repository ;
148+ continue ;
149+ }
150+
151+ adapter .registerHeader (repository , Character .toString (repoStart )
152+ .toUpperCase (US ));
153+ if (previous != null )
154+ adapter .registerNoSeparator (previous );
155+ start = repoStart ;
156+ if (start == 'z' )
157+ break ;
158+ start ++;
159+ previous = repository ;
160+ }
161+
162+ if (!repos .isEmpty ()) {
163+ Repository first = repos .get (0 );
164+ if (recentRepos .contains (first ))
165+ adapter .registerHeader (first , getString (string .recently_viewed ));
166+ }
167+ }
168+
125169 @ Override
126170 public Loader <List <Repository >> onCreateLoader (int id , final Bundle args ) {
127171 return new ThrowableLoader <List <Repository >>(getActivity (), items ) {
@@ -135,49 +179,7 @@ public List<Repository> loadData() throws Exception {
135179 List <Repository > repos = cache .getRepos (org ,
136180 isForceRefresh (args ));
137181 Collections .sort (repos , recentRepos );
138-
139- HeaderFooterListAdapter <?> rootAdapter = getListAdapter ();
140- if (rootAdapter != null ) {
141- DefaultRepositoryListAdapter adapter = (DefaultRepositoryListAdapter ) rootAdapter
142- .getWrappedAdapter ();
143- adapter .clearHeaders ();
144-
145- char start = 'a' ;
146- Repository previous = null ;
147- for (int i = 0 ; i < repos .size (); i ++) {
148- Repository repository = repos .get (i );
149-
150- if (recentRepos .contains (repository .getId ())) {
151- previous = repository ;
152- continue ;
153- }
154-
155- char repoStart = Character .toLowerCase (repository
156- .getName ().charAt (0 ));
157- if (repoStart < start ) {
158- previous = repository ;
159- continue ;
160- }
161-
162- adapter .registerHeader (repository ,
163- Character .toString (repoStart ).toUpperCase (US ));
164- if (previous != null )
165- adapter .registerNoSeparator (previous );
166- start = repoStart ;
167- if (start == 'z' )
168- break ;
169- start ++;
170- previous = repository ;
171- }
172-
173- if (!repos .isEmpty ()) {
174- Repository first = repos .get (0 );
175- if (recentRepos .contains (first ))
176- adapter .registerHeader (first ,
177- getString (string .recently_viewed ));
178- }
179- }
180-
182+ updateHeaders (repos );
181183 return repos ;
182184 }
183185 };
0 commit comments