package com.alorma.github.ui.fragment.users; import android.support.annotation.StyleRes; import android.support.v7.widget.GridLayoutManager; import android.support.v7.widget.RecyclerView; import android.view.LayoutInflater; import com.alorma.github.R; import com.alorma.github.sdk.services.client.GithubListClient; import com.alorma.github.ui.adapter.users.UsersAdapter; import com.alorma.github.ui.fragment.base.LoadingListFragment; import com.alorma.gitskarios.core.Pair; import com.mikepenz.octicons_typeface_library.Octicons; import core.User; import java.util.List; import rx.Observer; import rx.android.schedulers.AndroidSchedulers; import rx.schedulers.Schedulers; public abstract class BaseUsersListFragment extends LoadingListFragment<UsersAdapter> { @StyleRes @Override protected int getLightTheme() { return R.style.AppTheme_People; } @StyleRes @Override protected int getDarkTheme() { return R.style.AppTheme_Dark_People; } protected void setAction(GithubListClient<List<User>> userFollowersClient, boolean refresh) { startRefresh(); userFollowersClient.observable().subscribeOn(Schedulers.io()).observeOn(AndroidSchedulers.mainThread()).subscribe(pair -> onUsersLoaded(pair, refresh), throwable -> { }); } private void onUsersLoaded(Pair<List<User>, Integer> pair, boolean refresh) { setPage(pair.second); List<User> users = pair.first; if (users.size() > 0) { hideEmpty(); if (refresh || getAdapter() == null) { UsersAdapter adapter = new UsersAdapter(LayoutInflater.from(getActivity())); adapter.addAll(users); setAdapter(adapter); } else { getAdapter().addAll(users); } } else if (getAdapter() == null || getAdapter().getItemCount() == 0) { setEmpty(); } else { getAdapter().clear(); setEmpty(); } stopRefresh(); } @Override protected RecyclerView.LayoutManager getLayoutManager() { return new GridLayoutManager(getActivity(), getResources().getInteger(R.integer.grid_layout_columns)); } @Override protected Octicons.Icon getNoDataIcon() { return Octicons.Icon.oct_octoface; } }