public class GoodsListFragment extends AbFragment implements OnHeaderRefreshListener, OnFooterLoadListener { private MyApplication application; private Activity activity; private AbPullToRefreshView pullToRefreshView = null ; private ListView goodsListView; private GoodsListAdapter goodsListAdapter; private List<Goods> goodsList; private List<Category> categoryList = new ArrayList<Category>(); private int categoryId = - 1 ; private String categoryName; private String goodsName; private int businessId; private int regionId; private String businessName; /** 一页的数量 */ private int pageSize = 10 ; /** 当前页 */ private int pageNum = 1 ; private AbHttpUtil mAbHttpUtil; private AbExpandTabView expandTabView; private ArrayList<View> mViewArray = new ArrayList<View>(); private AbTabView2 tabView1; private AbTabView1 tabView2; private AbTabView1 tabView3; private List<AbMenuItem> groups; private List<ArrayList<AbMenuItem>> childrens; private List<AbMenuItem> categoryItems; private List<AbMenuItem> orderByItems; private Handler delayedHandler; @Override public View onCreateContentView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) { View view = inflater.inflate(R.layout.activity_goods_list, container, false ); AbViewUtil.scaleContentView((ViewGroup) view.findViewById(R.id.good_list)); activity = this .getActivity(); application = (MyApplication)activity.getApplication(); View emptyView = inflater.inflate(R.layout.empty_view, null ); Bundle bundle = getArguments(); if (bundle!= null ){ //根据分类查询 categoryId = bundle.getInt( "categoryId" , - 1 ); categoryName = bundle.getString( "categoryName" ); goodsName = bundle.getString( "goodsName" ); businessId = bundle.getInt( "businessId" , - 1 ); regionId = bundle.getInt( "regionId" , - 1 ); businessName = bundle.getString( "businessName" ); } pullToRefreshView = (AbPullToRefreshView) view.findViewById(R.id.goods_pull_list_view); goodsListView = (ListView) view.findViewById(R.id.goods_list_view); goodsListView.setEmptyView(emptyView); pullToRefreshView.getHeaderView().setHeaderProgressBarDrawable( this .getResources().getDrawable(R.drawable.progress_circular)); pullToRefreshView.getFooterView().setFooterProgressBarDrawable( this .getResources().getDrawable(R.drawable.progress_circular)); pullToRefreshView.getHeaderView().setArrowImage(R.drawable.ic_pull_refresh_arrow_down); pullToRefreshView.setOnHeaderRefreshListener( this ); pullToRefreshView.setOnFooterLoadListener( this ); goodsList = new ArrayList<Goods>(); goodsListAdapter = new GoodsListAdapter(activity, goodsList); goodsListView.setAdapter(goodsListAdapter); // 获取数据 goodsListView.setOnItemClickListener( new OnItemClickListener() { @Override public void onItemClick(AdapterView<?> parent, View view, int position, long id) { Goods goods = goodsList.get(position); Intent intent = new Intent(activity, GoodsDetailActivity. class ); intent.putExtra( "goodsId" , goods.getGoodsId()); activity.startActivity(intent); } }); //分类展开控件 expandTabView = (AbExpandTabView) view.findViewById(R.id.expandtab_view); //所有分类组 groups = new ArrayList<AbMenuItem>(); //所有子分类 childrens = new ArrayList<ArrayList<AbMenuItem>>(); //第二个tab的数据 categoryItems = new ArrayList<AbMenuItem>(); for (Category category:application.categoryList){ categoryItems.add( new AbMenuItem(category.getId(), category.getName())); } //第三个Tab的数据 orderByItems = new ArrayList<AbMenuItem>(); orderByItems.add( new AbMenuItem( 1 , "距离由近到远" )); orderByItems.add( new AbMenuItem( 2 , "销量由多到少" )); //3个TAB tabView1 = new AbTabView2(activity,groups,childrens,regionId,businessId,R.color.gray_white,R.drawable.list_item_selector_white,R.color.gray_white,R.drawable.list_item_selector_gray); tabView2 = new AbTabView1(activity,categoryItems,categoryId,R.color.gray_white,R.drawable.list_item_selector_white); tabView3 = new AbTabView1(activity,orderByItems, 0 ,R.color.gray_white,R.drawable.list_item_selector_white); mViewArray.add(tabView1); mViewArray.add(tabView2); mViewArray.add(tabView3); //设置参数 expandTabView.setValue(mViewArray,R.drawable.expand_tab_selector,R.drawable.expand_tab_line); //设置默认标题 expandTabView.setTitle( "全部商圈" , 0 ); expandTabView.setTitle( "全部类别" , 1 ); expandTabView.setTitle( "默认排序" , 2 ); if (categoryId > 0 ){ expandTabView.setTitle(tabView2.getShowText(), 1 ); } tabView1.setOnItemSelectListener( new AbTabView2.OnItemSelectListener() { @Override public void itemSelected( int position) { onRefreshTab(tabView1, tabView1.getShowText()); } }); tabView2.setOnItemSelectListener( new AbTabView1.OnItemSelectListener() { @Override public void itemSelected( int position) { onRefreshTab(tabView2, tabView2.getShowText()); //刷新数据 categoryId = categoryItems.get(position).getId(); pullToRefreshView.headerRefreshing(); } }); tabView3.setOnItemSelectListener( new AbTabView1.OnItemSelectListener() { @Override public void itemSelected( int position) { onRefreshTab(tabView3, tabView3.getShowText()); } }); mAbHttpUtil = AbHttpUtil.getInstance(activity); //根据定位的城市,获取地区列表 delayedHandler = new Handler(); delayedHandler.post( new Runnable() { @Override public void run() { if (application.city== null ){ delayedHandler.postDelayed( this , 1000 ); } else { getRegionList(application.city.getId()); } } }); this .setAbFragmentOnLoadListener( new AbFragmentOnLoadListener() { @Override public void onLoad() { getDataTask(categoryId,businessId,goodsName); } }); return view; } private void getRegionList( int cityId) { AbRequestParams params = new AbRequestParams(); params.put( "cityId" , String.valueOf(cityId)); mAbHttpUtil.post(Constant.REGION_LIST, params, new AbStringHttpResponseListener() { @Override public void onStart() { } @Override public void onFinish() { } @Override public void onFailure( int statusCode, String content, Throwable error) { AbToastUtil.showToast(activity,error.getMessage()); } @Override public void onSuccess( int statusCode, String content) { if (!AbStrUtil.isEmpty(content)) { AbResult result = new AbResult(content); if (result.getResultCode()==AbResult.RESULT_OK) { RegionListResult regionResult = (RegionListResult) AbJsonUtil.fromJson(content, RegionListResult. class ); if (regionResult!= null ){ List<Region> regionList = regionResult.getItems(); for (Region region:regionList){ groups.add( new AbMenuItem(region.getId(), region.getName())); } AbLogUtil.i(activity, "地区数量:" +groups.size()); tabView1.notifyDataSetChangedGroup(); //加载商圈 loadBusinessList(regionList); } } } } }); } private void getDataTask( int categoryId, int businessId,String goodsName) { AbRequestParams params = new AbRequestParams(); if (categoryId > 0 ) { params.put( "categoryId" , String.valueOf(categoryId)); } if (businessId > 0 ) { params.put( "businessId" , String.valueOf(businessId)); } if (!AbStrUtil.isEmpty(goodsName)){ try { params.put( "goodsName" , URLEncoder.encode(goodsName,HTTP.UTF_8)); } catch (Exception e1) { e1.printStackTrace(); } } params.put( "pageSize" , String.valueOf(pageSize)); params.put( "pageNum" , String.valueOf(pageNum)); mAbHttpUtil.post(Constant.GOODS_LIST, params, new AbStringHttpResponseListener() { @Override public void onStart() { } @Override public void onFinish() { showContentView(); pullToRefreshView.onHeaderRefreshFinish(); } @Override public void onFailure( int statusCode, String content, Throwable error) { AbToastUtil.showToast(activity, error.getMessage()); } @Override public void onSuccess( int statusCode, String content) { try { AbResult result = new AbResult(content); if (result.getResultCode() == AbResult.RESULT_OK) { // 成功 GoodsListResult goodsListResult = (GoodsListResult) AbJsonUtil.fromJson(content,GoodsListResult. class ); if (pageNum== 1 ){ goodsList.clear(); goodsListAdapter.notifyDataSetChanged(); } goodsList.addAll(goodsListResult.getItems()); goodsListAdapter.notifyDataSetChanged(); } else { AbToastUtil.showToast(activity, result.getResultMessage()); } } catch (Exception e) { e.printStackTrace(); } } }); } /** * 加载商圈 * @param regionList */ public void loadBusinessList(List<Region> regionList){ StringBuffer sb = new StringBuffer(); for ( int i= 0 ;i<regionList.size();i++){ Region region = regionList.get(i); if (i== 0 ){ sb.append(region.getId()); } else { sb.append( "," +region.getId()); } } AbRequestParams params = new AbRequestParams(); params.put( "regionIds" , sb.toString()); mAbHttpUtil.post(Constant.BUSINESS_AREA_LISTS, params, new AbStringHttpResponseListener() { @Override public void onStart() { } @Override public void onFinish() { } @Override public void onFailure( int statusCode, String content, Throwable error) { } @Override public void onSuccess( int statusCode, String content) { try { AbResult result = new AbResult(content); if (result.getResultCode() == AbResult.RESULT_OK) { // 成功 BusinessAreaListsResult businessAreaListsResult = (BusinessAreaListsResult) AbJsonUtil.fromJson(content,BusinessAreaListsResult. class ); if (businessAreaListsResult!= null ){ List<List<BusinessArea>> lists = businessAreaListsResult.getItems(); for (List<BusinessArea> businessAreaList:lists){ ArrayList<AbMenuItem> itemList = new ArrayList<AbMenuItem> (); for (BusinessArea area:businessAreaList){ itemList.add( new AbMenuItem(area.getId(), area.getName())); } childrens.add(itemList); } } AbLogUtil.i(activity, "商圈数量:" +groups.size()); tabView1.notifyDataSetChangedChildren(); //设置默认值 tabView1.updateShowText(regionId, businessId); if (businessId > 0 ){ expandTabView.setTitle(tabView1.getShowText(), 0 ); } } } catch (Exception e) { e.printStackTrace(); } } }); } @Override public void setResource() { this .setTextColor( this .getResources().getColor(R.color.gray)); this .setTextSize( 13 ); // 设置加载的资源 this .setLoadDrawable(R.drawable.ic_loading_1); this .setLoadMessage( "正在查询,请稍候" ); this .setRefreshDrawable(R.drawable.ic_refresh); this .setRefreshMessage( "请求出错,请重试" ); } @Override public void onFooterLoad(AbPullToRefreshView arg0) { pageNum ++; getDataTask(categoryId,businessId,goodsName); } @Override public void onHeaderRefresh(AbPullToRefreshView arg0) { pageNum = 1 ; getDataTask(categoryId,businessId,goodsName); } public void updateData(String goodsName){ pageNum = 1 ; getDataTask(categoryId,businessId,goodsName); } /** * 设置TAB标题 * @param view * @param showText */ private void onRefreshTab(View view, String showText) { expandTabView.onPressBack(); int position = getPositon(view); if (position >= 0 && !expandTabView.getTitle(position).equals(showText)) { expandTabView.setTitle(showText, position); } } private int getPositon(View tView) { for ( int i = 0 ; i < mViewArray.size(); i++) { if (mViewArray.get(i) == tView) { return i; } } return - 1 ; } } |