Java tutorial
/** * Copyright 2012 C. A. Fitzgerald * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. * You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. */ package com.github.riotopsys.shoppinglist.adapter; import java.util.Collections; import java.util.List; import android.content.Context; import android.os.Bundle; import android.os.Parcelable; import android.support.v4.app.Fragment; import android.support.v4.app.FragmentManager; import android.support.v4.app.FragmentStatePagerAdapter; import android.util.Log; import com.github.riotopsys.shoppinglist.AppKeys; import com.github.riotopsys.shoppinglist.comparator.ListNameComparator; import com.github.riotopsys.shoppinglist.fragment.ShoppingListFragment; import com.github.riotopsys.shoppinglist.model.ShoppingList; import com.github.riotopsys.shoppinglist.model.ShoppingListCollection; public class ShoppingListCollectionAdapter extends FragmentStatePagerAdapter { private static final String TAG = FragmentStatePagerAdapter.class.getSimpleName(); private ShoppingListCollection mShoppingListCollection; private List<ShoppingList> mItems; private ListNameComparator mComparator = new ListNameComparator(); public ShoppingListCollectionAdapter(Context ctx, FragmentManager fm, ShoppingListCollection collection) { super(fm); mShoppingListCollection = collection; mItems = mShoppingListCollection.getItems(ctx); Collections.sort(mItems, mComparator); } @Override public Fragment getItem(int position) { Fragment fragment = new ShoppingListFragment(); Bundle args = new Bundle(); args.putSerializable(AppKeys.LIST_KEY, mItems.get(position).getGuid()); fragment.setArguments(args); return fragment; } @Override public CharSequence getPageTitle(int position) { String title = ""; if (mItems.size() > 0 && mItems.size() > position) { title = mItems.get(position).getName(); } return title; } @Override public int getCount() { return mItems.size(); } @Override public void notifyDataSetChanged() { throw new RuntimeException(TAG + " needs a context!"); } public void notifyDataSetChanged(Context ctx) { mItems = mShoppingListCollection.getItems(ctx); Collections.sort(mItems, mComparator); super.notifyDataSetChanged(); } public ShoppingList getList(int currentItem) { return mItems.get(currentItem); } @Override public int getItemPosition(Object object) { // TODO: something is very wrong here // ShoppingListFragment fragment = (ShoppingListFragment) object; // FragmentActivity activity = fragment.getActivity(); // if (activity == null) { // return POSITION_NONE; // } // UUID uuid = (UUID) // fragment.getArguments().getSerializable(IntentKeys.LIST_KEY); // int index = mItems.indexOf(DataManager.getRecord(activity, uuid)); // if (index != -1) { // return index; // } return POSITION_NONE; } @Override public Parcelable saveState() { try { return super.saveState(); } catch (IllegalStateException e) { Log.e(TAG, "suppressing", e); } return null; } public int getPositionOf(ShoppingList shoppingList) { return mItems.indexOf(shoppingList); } }