package cn.crane.application.greenlife.ui.merchant; import android.text.TextUtils; import android.view.View; import android.view.View.OnClickListener; import android.widget.AdapterView; import android.widget.AdapterView.OnItemClickListener; import android.widget.Button; import android.widget.LinearLayout; import android.widget.ListView; import android.widget.TextView; import java.util.ArrayList; import java.util.List; import cn.crane.application.greenlife.R; import cn.crane.application.greenlife.adapter.merchant.ListFoodAdapter; import cn.crane.application.greenlife.adapter.merchant.ListFoodCategoryAdapter; import cn.crane.application.greenlife.bean.merchant.FoodGroup; import cn.crane.application.greenlife.bean.merchant.FoodItem; import cn.crane.application.greenlife.ui.order.OrderConfirmActivity; import cn.crane.application.greenlife.view.ViewAddMinus; import cn.crane.application.greenlife.view.sticky.ViewStickyExpandableList; import cn.crane.application.greenlife.view.sticky.ViewStickyExpandableList.CallBack; import cn.crane.framework.activity.BaseActivity; import cn.crane.framework.fragment.BaseFragment; public class FragmentMeals extends BaseFragment implements OnItemClickListener, OnClickListener { public static final int requestCode = 1000; private TextView tvTitle; private ListView lv_category; private ViewStickyExpandableList view_stickyList; private List<FoodGroup> arrGroups = new ArrayList<FoodGroup>(); private List<FoodItem> arrFoodItemsSelect = new ArrayList<FoodItem>(); private ListFoodAdapter adapter; private ListFoodCategoryAdapter categoryAdapter; private TextView tvBottomLeft; private TextView tvBottomRight; private LinearLayout llShopCar; private TextView tvCount; private int iCount; private int totalPrice; private Button btnBack; @Override protected int getLayoutId() { // TODO Auto-generated method stub return R.layout.fragment_food_list; } @Override protected void findViews() { initViews(getView()); tvBottomLeft = (TextView) findViewById(R.id.tv_total_price); tvBottomRight = (TextView) findViewById(R.id.tv_choose_ok); tvCount = (TextView) findViewById(R.id.tv_total_count); llShopCar = (LinearLayout) findViewById(R.id.ll_shop_car); tvTitle = (TextView) findViewById(R.id.tv_title); btnBack = (Button) findViewById(R.id.btn_back); } @Override protected void bindViews() { tvBottomLeft.setOnClickListener(this); tvBottomRight.setOnClickListener(this); llShopCar.setOnClickListener(this); btnBack.setOnClickListener(this); } @Override protected void init() { view_stickyList.getAdapter().setOnCountChangedListener(onCountChangedListener); adapter = view_stickyList.getAdapter(); // llPopSelectFoods.setVisibility(View.GONE); dismissSelectList(); // animBottomIn.setAnimationListener(animationListener); // animBottomOut.setAnimationListener(animationListener); tvTitle.setText("XXX水果店"); } private void initViews(View root) { lv_category = (ListView) root.findViewById(R.id.lv_category); view_stickyList = (ViewStickyExpandableList) root .findViewById(R.id.view_stickyList); createList(); categoryAdapter = new ListFoodCategoryAdapter(getActivity(), arrGroups); lv_category.setAdapter(categoryAdapter); lv_category.setOnItemClickListener(this); view_stickyList.setOnGroupChangedListener(onGroupChangedListener); view_stickyList.setArrGroups(arrGroups); } public void createList() { arrGroups.clear(); for (int i = 0; i < 10; i++) { FoodGroup group = new FoodGroup(); group.setDishesGroupName("Group " + i); List<FoodItem> arrItems = new ArrayList<FoodItem>(); for (int j = 0; j < 5; j++) { FoodItem item = new FoodItem(); item.setDishesGroupName("Group " + i); item.setDishesName("Item " + j); arrItems.add(item); } group.setArrFoodItems(arrItems); arrGroups.add(group); } } @Override public void onItemClick(AdapterView<?> parent, View view, int position, long id) { categoryAdapter.setiSelect(position); view_stickyList.scrollToGroup(position); } @Override public void onClick(View v) { switch (v.getId()) { case R.id.btn_back: getActivity().finish(); break; case R.id.tv_total_price: case R.id.ll_shop_car: // if(llGrey.getVisibility() == View.VISIBLE) // { // animDismissSelectList(); // }else // { // if(arrFoodItemsSelect != null && arrFoodItemsSelect.size() > 0) // { // animShowSelectList(); // } // } break; case R.id.tv_choose_ok: OrderConfirmActivity.show(getActivity()); break; default: break; } } private ListFoodAdapter.OnCountChangedListener onCountChangedListener = new ListFoodAdapter.OnCountChangedListener() { @Override public void onCountChanged(List<FoodItem> arrFoodItems, int iCount, int totalPrice) { FragmentMeals.this.iCount = iCount; FragmentMeals.this.totalPrice = totalPrice; tvCount.setText(iCount + ""); tvBottomLeft.setText(FragmentMeals.this.totalPrice +""); if(arrFoodItems != null && arrFoodItems.size() > 0) { arrFoodItemsSelect.clear(); arrFoodItemsSelect.addAll(arrFoodItems); }else { dismissSelectList(); } } @Override public void onChildCLicked(FoodItem foodItem) { // TODO Auto-generated method stub // FoodDetailActivity.show(getActivity(), foodItem, requestCode); FoodDetailDialogFragment.show((BaseActivity) getActivity()); } }; private ViewAddMinus.OnNumberChangedListener onNumberChangedListener = new ViewAddMinus.OnNumberChangedListener() { @Override public void onNumberChanged(ViewAddMinus view, int iNumber) { FoodItem item = view.getItem(); if(item != null && arrGroups != null) { for(FoodGroup group : arrGroups) { if(group != null && group.getArrFoodItems() != null) { for(FoodItem foodItem : group.getArrFoodItems()) { if(foodItem != null && foodItem.getId() != null) { if(foodItem.getId().equalsIgnoreCase(item.getId())) { foodItem.setiCountChoose(iNumber); adapter.notifyDataSetChanged(); break; } } } } } } } }; private CallBack onGroupChangedListener = new CallBack() { @Override public void onGroupChanged(String groupId) { if(!TextUtils.isEmpty(groupId)) { for(int i = 0;i<arrGroups.size();i++) { if(groupId.equalsIgnoreCase(arrGroups.get(i).getFoodType())) { categoryAdapter.setiSelect(i); break; } } } } @Override public void onChildClicked(FoodItem foodItem) { // FoodDetailActivity.show(getActivity(), foodItem, requestCode); FoodDetailDialogFragment.show((BaseActivity) getActivity()); } }; private void animShowSelectList() { // llGrey.clearAnimation(); // llGrey.startAnimation(animAlphaIn); // llPopSelectFoods.startAnimation(animBottomIn); showSelectList(); } private void animDismissSelectList() { // llGrey.clearAnimation(); // llGrey.startAnimation(animAlphaOut); // llPopSelectFoods.startAnimation(animBottomOut); dismissSelectList(); } private void showSelectList() { // llGrey.setVisibility(View.VISIBLE); // ViewHelper.setAlpha(llGrey, 0.5f); // // llPopSelectFoods.setVisibility(View.VISIBLE); // } private void dismissSelectList() { // llGrey.setVisibility(View.GONE); // ViewHelper.setAlpha(llGrey, 0.5f); // // llPopSelectFoods.setVisibility(View.GONE); } }