private void updateHeaders(final List<Repository> repos) { HeaderFooterListAdapter<?> rootAdapter = getListAdapter(); if (rootAdapter == null) return; DefaultRepositoryListAdapter adapter = (DefaultRepositoryListAdapter) rootAdapter.getWrappedAdapter(); adapter.clearHeaders(); char start = 'a'; Repository previous = null; for (int i = 0; i < repos.size(); i++) { Repository repository = repos.get(i); if (recentRepos.contains(repository.getId())) { previous = repository; continue; } char repoStart = Character.toLowerCase(repository.getName().charAt(0)); if (repoStart < start) { previous = repository; continue; } adapter.registerHeader(repository, Character.toString(repoStart).toUpperCase(US)); if (previous != null) adapter.registerNoSeparator(previous); start = repoStart; if (start == 'z') break; start++; previous = repository; } if (!repos.isEmpty()) { Repository first = repos.get(0); if (recentRepos.contains(first)) adapter.registerHeader(first, getString(string.recently_viewed)); } }
@Override public void onOrganizationSelected(final User organization) { User previousOrg = org.get(); int previousOrgId = previousOrg != null ? previousOrg.getId() : -1; org.set(organization); if (recentRepos != null) recentRepos.saveAsync(); // Only hard refresh if view already created and org is changing if (previousOrgId != organization.getId()) { Activity activity = getActivity(); if (activity != null) recentRepos = new RecentRepositories(activity, organization); refreshWithProgress(); } }
@Override public void onStop() { super.onStop(); if (recentRepos != null) recentRepos.saveAsync(); }
@Override public void onListItemClick(ListView list, View v, int position, long id) { Repository repo = (Repository) list.getItemAtPosition(position); if (recentRepos != null) recentRepos.add(repo); startActivityForResult(RepositoryViewActivity.createIntent(repo), REPOSITORY_VIEW); }