Skip to content

Instantly share code, notes, and snippets.

@anstaendig
Last active April 19, 2016 09:21
Show Gist options
  • Star 0 You must be signed in to star a gist
  • Fork 0 You must be signed in to fork a gist
  • Save anstaendig/f50c42a82f3d990e779e4e5606f50d0d to your computer and use it in GitHub Desktop.
Save anstaendig/f50c42a82f3d990e779e4e5606f50d0d to your computer and use it in GitHub Desktop.
public class BloggerAppFragment extends Fragment {
// Constants
private static final String TAG = "BloggerAppFragment";
private static final String ID = "id";
// Member variables
@InjectView(R.id.viewpager)
ViewPager mViewPager;
@InjectView(R.id.tab_layout)
TabLayout mTabLayout;
@InjectView(R.id.blogger_followers_textview)
TextView mFollowers;
@InjectView(R.id.blogger_imageview)
RoundedImageView mBloggerImage;
@InjectView(R.id.blogger_name_textview)
TextView mBloggerName;
@InjectView(R.id.blogger_description_textview)
TextView mBloggerDescription;
@InjectView(R.id.fab_create_outfit)
FloatingActionButton mFabCreateOutfit;
private View mView;
private ListFragmentPagerAdapter mAdapter;
private String mBloggerId;
private Blogger mBlogger;
private boolean mIsLoading = false;
private IdFilterConfiguration mBloggerFilter;
private BloggerLoader mBloggerLoader;
// Callbacks
final private LoaderCallback<BloggerResponse> mCallbackBlogger = new LoaderCallback<BloggerResponse>() {
@Override
public void onItemsLoaded(BloggerResponse bloggerResponse, LoaderDirection resultFor) {
mIsLoading = false;
mBlogger = bloggerResponse.blogger;
int followers = mBlogger.getFollowers();
mFollowers.setText(followers > 1 ? followers + " " + getString(R.string.followers) : followers + " " + getString(R.string.follower));
ImageUtils.loadImage(mBlogger.getImage(), mBloggerImage, ImageUtils.ImageWidth.THUMBNAIL_100x100);
mBloggerName.setText(mBlogger.getName());
mBloggerDescription.setText(mBlogger.getDescription());
}
};
// Constructors
public BloggerAppFragment() {
// Required empty public constructor
}
// Factory methods
public static BloggerAppFragment newInstance(String id) {
BloggerAppFragment fragment = new BloggerAppFragment();
Bundle args = new Bundle();
args.putString(ID, id);
fragment.setArguments(args);
return fragment;
}
// Lifecycle methods
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
if (getArguments() != null) {
mBloggerId = getArguments().getString(ID);
mBloggerFilter = new IdFilterConfiguration(mBloggerId);
}
mBloggerLoader = new BloggerLoader(mCallbackBlogger);
}
@Override
public View onCreateView(LayoutInflater inflater, ViewGroup container,
Bundle savedInstanceState) {
mView = inflater.inflate(R.layout.fragment_blogger_app, container, false);
setHasOptionsMenu(true);
return mView;
}
@Override
public void onViewCreated(View view, @Nullable Bundle savedInstanceState) {
super.onViewCreated(view, savedInstanceState);
ButterKnife.inject(this, view);
mFabCreateOutfit.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
Toast.makeText(getContext(), "This is going to start the flow to create an outfit", Toast.LENGTH_SHORT).show();
}
});
mAdapter = new ListFragmentPagerAdapter(getFragmentManager());
mAdapter.addFragment(OutfitListFragment.newInstance(BloggerAppOutfitResponse.Type.DRAFT), "DRAFT");
mAdapter.addFragment(OutfitListFragment.newInstance(BloggerAppOutfitResponse.Type.READY), "READY");
mAdapter.addFragment(OutfitListFragment.newInstance(BloggerAppOutfitResponse.Type.LIVE), "LIVE");
mAdapter.addFragment(OutfitListFragment.newInstance(BloggerAppOutfitResponse.Type.ON_HOLD), "ON HOLD");
mViewPager.setAdapter(mAdapter);
mTabLayout.setupWithViewPager(mViewPager);
loadBlogger();
}
// Helper methods
private void loadBlogger() {
mIsLoading = true;
mBloggerLoader.reloadItems(mBloggerFilter);
}
// Inner classes
class ListFragmentPagerAdapter extends FragmentStatePagerAdapter {
private final List<Fragment> mFragmentList = new ArrayList<>();
private final List<String> mFragmentTitleList = new ArrayList<>();
public ListFragmentPagerAdapter(FragmentManager fm) {
super(fm);
}
@Override
public Fragment getItem(int position) {
return mFragmentList.get(position);
}
@Override
public int getCount() {
return mFragmentList.size();
}
@Override
public CharSequence getPageTitle(int position) {
return mFragmentTitleList.get(position);
}
public void addFragment(Fragment fragment, String title) {
mFragmentList.add(fragment);
mFragmentTitleList.add(title);
}
}
}
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment