Android Open Source - android Lineup List Fragment






From Project

Back to project page android.

License

The source code is released under:

Apache License

If you think the Android project android listed in this page is inappropriate, such as containing malicious code/tools or violating the copyright, please email info at java2s dot com, thanks.

Java Source Code

package com.github.digin.android.fragments;
/*w w w .j  a  va2s  .c  om*/
import android.annotation.TargetApi;
import android.app.Activity;
import android.app.ListFragment;
import android.os.Build;
import android.os.Bundle;
import android.os.Parcelable;
import android.view.LayoutInflater;
import android.view.Menu;
import android.view.MenuInflater;
import android.view.MenuItem;
import android.view.View;
import android.view.ViewGroup;
import android.widget.AdapterView;
import android.widget.BaseAdapter;
import android.widget.ListAdapter;
import android.widget.TextView;

import com.github.digin.android.R;
import com.github.digin.android.Utils;
import com.github.digin.android.adapters.ChefListAdapter;
import com.github.digin.android.listeners.OnParticipantQueryListener;
import com.github.digin.android.logging.AnalyticsHelper;
import com.github.digin.android.logging.Logger;
import com.github.digin.android.models.Chef;
import com.github.digin.android.models.Participant;
import com.github.digin.android.repositories.ChefsStore;

import java.util.ArrayList;
import java.util.Comparator;
import java.util.List;

/**
 * Created by david on 7/15/14.
 */
public abstract class LineupListFragment<T extends Participant> extends ListFragment implements AdapterView.OnItemClickListener, OnParticipantQueryListener<T> {

    public static final String SORTTEXT = "Sort by %s";
    Sorting otherSorting = Sorting.LOCATION;
    private boolean mChefsLoaded = false;
    private boolean mLoadingError = false;

    public LineupListFragment() {
    }

    @Override
    public abstract void onItemClick(AdapterView<?> parent, View view, int position, long id);

    @Override
    public void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setHasOptionsMenu(true);

    }

    @Override
    public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) {
        View view = inflater.inflate(R.layout.chef_list_layout, container, false);
        return view;
    }

    @Override
    public void onResume() {
        super.onResume();
        getActivity().invalidateOptionsMenu();
        getListView().setOnItemClickListener(this);

        getChefs();
    }

    @Override
    public void onAttach(Activity activity) {
        super.onAttach(activity);
    }

    @Override
    public void onComplete(List<T> chefs) {
        if(chefs == null || chefs.size() == 0) {
            mLoadingError = true;
            mChefsLoaded = false;
            setListAdapter(getAdapterForParticipants(new ArrayList<T>()));
        } else {
            mLoadingError = false;
            setListAdapter(getAdapterForParticipants(chefs));
            mChefsLoaded = true;
            getActivity().invalidateOptionsMenu();
        }
        trySetErrorView();
    }

    public abstract void getChefs();

    public abstract ListAdapter getAdapterForParticipants(List<T> items);

    private void trySetErrorView() {
        if(getView() != null) {
            View error = getView().findViewById(R.id.error);
            View loading = getView().findViewById(android.R.id.empty);
            if (mLoadingError) {
                TextView message = (TextView) error.findViewById(R.id.error_message);
                message.setText(getErrorMessage());
                error.setVisibility(View.VISIBLE);

                loading.setVisibility(View.GONE);
            } else {
                error.setVisibility(View.GONE);
            }
        }
    }

    @Override
    public void onViewCreated(View view, Bundle savedInstanceState) {
        super.onViewCreated(view, savedInstanceState);
        view.setBackgroundColor(getResources().getColor(android.R.color.white));

        Utils.fixForActionBarHeight(getActivity(), view);

        trySetErrorView();
    }

    @Override
    public void onCreateOptionsMenu(Menu menu, MenuInflater inflater) {
        if( getFragmentManager().findFragmentById(R.id.content_frame) == this ) {
            if (mChefsLoaded) {
                inflater.inflate(R.menu.list, menu);
                MenuItem item = menu.findItem(R.id.action_sort);
                item.setTitle(String.format(SORTTEXT, otherSorting.name().toLowerCase()));
            }
        }
    }



    public enum Sorting {
        NAME(new Comparator<Participant>() {
            @Override
            public int compare(Participant lhs, Participant rhs) {
                return lhs.getName().compareTo(rhs.getName());
            }
        }), LOCATION(new Comparator<Participant>() {
            @Override
            public int compare(Participant lhs, Participant rhs) {
                return lhs.getTent().compareTo(rhs.getTent());
            }
        });

        Comparator<Participant> comparator;

        Sorting(Comparator<Participant> comparator) {
            this.comparator = comparator;
        }

        public Comparator<Participant> getComparator() {
            return comparator;
        }
    }

    public abstract String getErrorMessage();
}




Java Source Code List

com.github.digin.android.ApplicationTest.java
com.github.digin.android.DiginApplication.java
com.github.digin.android.ImageCacheEntry.java
com.github.digin.android.NavDrawerController.java
com.github.digin.android.NavDrawerItem.java
com.github.digin.android.Utils.java
com.github.digin.android.activities.MainActivity.java
com.github.digin.android.adapters.ChefListAdapter.java
com.github.digin.android.adapters.NavDrawerAdapter.java
com.github.digin.android.adapters.ParticipantListAdapter.java
com.github.digin.android.constants.LocationDataHolder.java
com.github.digin.android.constants.MapOverlayData.java
com.github.digin.android.constants.ParseID.java
com.github.digin.android.constants.ParseKeys.java
com.github.digin.android.constants.Station.java
com.github.digin.android.exceptions.InvalidClassException.java
com.github.digin.android.factories.BreweryFactory.java
com.github.digin.android.factories.ChefFactory.java
com.github.digin.android.factories.WineryFactory.java
com.github.digin.android.fragments.BoundedMapFragment.java
com.github.digin.android.fragments.BreweriesFragment.java
com.github.digin.android.fragments.BreweryDetailsFragment.java
com.github.digin.android.fragments.ChefListFragment.java
com.github.digin.android.fragments.DetailsFragment.java
com.github.digin.android.fragments.DeveloperFragment.java
com.github.digin.android.fragments.DiginAboutFragment.java
com.github.digin.android.fragments.FavoritesFragment.java
com.github.digin.android.fragments.LineupListFragment.java
com.github.digin.android.fragments.ParticipantDetailsFragment.java
com.github.digin.android.fragments.WineriesFragment.java
com.github.digin.android.fragments.WineryDetailsFragment.java
com.github.digin.android.listeners.OnBoundsQueryListener.java
com.github.digin.android.listeners.OnBoundsRetrievalListener.java
com.github.digin.android.listeners.OnParticipantQueryListener.java
com.github.digin.android.listeners.OnSingleParticipantQueryListener.java
com.github.digin.android.logging.AnalyticsHelper.java
com.github.digin.android.logging.Logger.java
com.github.digin.android.models.Brewery.java
com.github.digin.android.models.Chef.java
com.github.digin.android.models.ParseBackedModel.java
com.github.digin.android.models.Participant.java
com.github.digin.android.models.TemporaryParticipantPlaceholder.java
com.github.digin.android.models.Winery.java
com.github.digin.android.models.map.BoundPoint.java
com.github.digin.android.models.map.Bounds.java
com.github.digin.android.repositories.BoundsStore.java
com.github.digin.android.repositories.BreweryStore.java
com.github.digin.android.repositories.ChefsStore.java
com.github.digin.android.repositories.FavoritesStore.java
com.github.digin.android.repositories.WineryStore.java
com.github.digin.android.tasks.ParseAllBoundsTask.java
com.github.digin.android.tasks.ParseAllBreweriesTask.java
com.github.digin.android.tasks.ParseAllChefsTask.java
com.github.digin.android.tasks.ParseAllWineriesTask.java
com.nirhart.parallaxscroll.views.ParallaxExpandableListView.java
com.nirhart.parallaxscroll.views.ParallaxListViewHelper.java
com.nirhart.parallaxscroll.views.ParallaxListView.java
com.nirhart.parallaxscroll.views.ParallaxScrollView.java
com.nirhart.parallaxscroll.views.ParallaxedView.java