Skip to content

Instantly share code, notes, and snippets.

@anstaendig
Last active April 19, 2016 09:21
Show Gist options
  • Select an option

  • Save anstaendig/f50c42a82f3d990e779e4e5606f50d0d to your computer and use it in GitHub Desktop.

Select an option

Save anstaendig/f50c42a82f3d990e779e4e5606f50d0d to your computer and use it in GitHub Desktop.

Revisions

  1. Marcel Holter revised this gist Apr 19, 2016. 1 changed file with 0 additions and 34 deletions.
    34 changes: 0 additions & 34 deletions BloggerAppFragment.java
    Original file line number Diff line number Diff line change
    @@ -1,37 +1,3 @@
    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";
  2. Marcel Holter created this gist Apr 19, 2016.
    167 changes: 167 additions & 0 deletions BloggerAppFragment.java
    Original 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);
    }
    }
    }