Last active
April 19, 2016 09:21
-
-
Save anstaendig/f50c42a82f3d990e779e4e5606f50d0d to your computer and use it in GitHub Desktop.
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
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