Last active
April 19, 2016 09:21
-
-
Save anstaendig/f50c42a82f3d990e779e4e5606f50d0d to your computer and use it in GitHub Desktop.
Revisions
-
Marcel Holter revised this gist
Apr 19, 2016 . 1 changed file with 0 additions and 34 deletions.There are no files selected for viewing
This file contains hidden or 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 charactersOriginal file line number Diff line number Diff line change @@ -1,37 +1,3 @@ public class BloggerAppFragment extends Fragment { // Constants private static final String TAG = "BloggerAppFragment"; -
Marcel Holter created this gist
Apr 19, 2016 .There are no files selected for viewing
This file contains hidden or 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 charactersOriginal file line number Diff line number Diff line change @@ -0,0 +1,167 @@ package com.app.amaze.amazeapp.blogger.presentation; import android.os.Bundle; import android.support.annotation.Nullable; import android.support.design.widget.FloatingActionButton; import android.support.design.widget.TabLayout; import android.support.v4.app.Fragment; import android.support.v4.app.FragmentManager; import android.support.v4.app.FragmentStatePagerAdapter; import android.support.v4.view.ViewPager; import android.view.LayoutInflater; import android.view.View; import android.view.ViewGroup; import android.widget.TextView; import android.widget.Toast; import com.app.amaze.amazeapp.R; import com.app.amaze.amazeapp.blogger.BloggerAppOutfitResponse; import com.app.amaze.amazeapp.blogger.BloggerLoader; import com.app.amaze.amazeapp.blogger.BloggerResponse; import com.app.amaze.amazeapp.blogger.IdFilterConfiguration; import com.app.amaze.amazeapp.loaders.definititions.LoaderCallback; import com.app.amaze.amazeapp.loaders.definititions.LoaderDirection; import com.app.amaze.amazeapp.models.Blogger; import com.app.amaze.amazeapp.utils.ImageUtils; import com.makeramen.roundedimageview.RoundedImageView; import java.util.ArrayList; import java.util.List; import butterknife.ButterKnife; import butterknife.InjectView; 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); } } }