package in.srain.cube.mints.base; import android.graphics.Color; import android.os.Bundle; import android.view.LayoutInflater; import android.view.View; import android.view.View.OnClickListener; import android.view.ViewGroup; import android.widget.TextView; import in.srain.cube.R; import in.srain.cube.util.LocalDisplay; import in.srain.cube.views.block.BlockListAdapter; import in.srain.cube.views.block.BlockListView; import in.srain.cube.views.block.BlockListView.OnItemClickListener; import java.util.ArrayList; public abstract class BlockMenuFragment extends TitleBaseFragment { private BlockListView mBlockListView; private ArrayList<ItemInfo> mItemInfos = new ArrayList<BlockMenuFragment.ItemInfo>(); private int mSize = 0; private BlockListAdapter<ItemInfo> mBlockListAdapter = new BlockListAdapter<BlockMenuFragment.ItemInfo>() { @Override public View getView(LayoutInflater layoutInflater, int position) { return getViewForBlock(layoutInflater, position); } }; protected int getLayoutId() { return R.layout.cube_mints_base_fragment_block_menu; } protected View getViewForBlock(LayoutInflater layoutInflater, int position) { ItemInfo itemInfo = mBlockListAdapter.getItem(position); ViewGroup view = (ViewGroup) layoutInflater.inflate(R.layout.cube_mints_base_block_menu_item, null); if (itemInfo != null) { TextView textView = ((TextView) view.findViewById(R.id.cube_mints_base_block_menu_item_title)); textView.setText(itemInfo.mTitle); view.setBackgroundColor(itemInfo.getColor()); } return view; } protected abstract void addItemInfo(ArrayList<ItemInfo> itemInfos); protected abstract void setupViews(); @Override protected View createView(final LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) { View view = inflater.inflate(getLayoutId(), null); mBlockListView = (BlockListView) view.findViewById(R.id.fragment_block_menu_block_list); addItemInfo(mItemInfos); setupList(); setupViews(); return view; } protected void setupList() { mSize = (LocalDisplay.SCREEN_WIDTH_PIXELS - LocalDisplay.dp2px(25 + 5 + 5)) / 3; int horizontalSpacing = LocalDisplay.dp2px(5); int verticalSpacing = LocalDisplay.dp2px(10.5f); mBlockListView.setOnItemClickListener(new OnItemClickListener() { @Override public void onItemClick(View v, int position) { ItemInfo itemInfo = mBlockListAdapter.getItem(position); if (itemInfo != null) { itemInfo.mOnClickListener.onClick(v); } } }); mBlockListAdapter.setSpace(horizontalSpacing, verticalSpacing); mBlockListAdapter.setBlockSize(mSize, mSize); mBlockListAdapter.setColumnNum(3); mBlockListView.setAdapter(mBlockListAdapter); mBlockListAdapter.displayBlocks(mItemInfos); } protected ItemInfo newItemInfo(String title, int color, OnClickListener onClickListener) { return new ItemInfo(title, getResources().getColor(color), onClickListener); } protected ItemInfo newItemInfo(String title, String color, OnClickListener onClickListener) { return new ItemInfo(title, Color.parseColor(color), onClickListener); } protected ItemInfo newItemInfo(int title, String color, OnClickListener onClickListener) { return new ItemInfo(getString(title), Color.parseColor(color), onClickListener); } protected ItemInfo newItemInfo(int title, int color, OnClickListener onClickListener) { return new ItemInfo(getString(title), getResources().getColor(color), onClickListener); } @Override protected boolean enableDefaultBack() { return false; } protected static class ItemInfo { private int mColor; private String mTitle; private OnClickListener mOnClickListener; public ItemInfo(String title, int color, OnClickListener onClickListener) { mTitle = title; mColor = color; mOnClickListener = onClickListener; } private int getColor() { return mColor; } } }