商城之商品分类

来源:互联网 发布:全校第一知乎 编辑:程序博客网 时间:2024/04/30 14:25


1.注意:根据不同分辨率写Value,layout,drawable。从而做到适配


2.布局

<?xml version="1.0" encoding="utf-8"?><LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"    xmlns:custom="http://schemas.android.com/apk/res-auto"    xmlns:app="http://schemas.android.com/tools"    android:orientation="horizontal"    android:layout_width="match_parent"    android:layout_height="match_parent"    android:paddingTop="@dimen/basicPaddingSize">    <android.support.v7.widget.RecyclerView        android:id="@+id/recyclerview_category"        android:layout_width="@dimen/category_layout_width"        android:layout_height="fill_parent"        android:background="@color/white"        >    </android.support.v7.widget.RecyclerView>    <LinearLayout        android:layout_width="match_parent"        android:layout_height="match_parent"        android:orientation="vertical"        android:layout_marginLeft="2dp"        >        <com.daimajia.slider.library.SliderLayout            android:id="@+id/slider"            android:layout_width="match_parent"            android:layout_height="180dp"            custom:pager_animation="Accordion"            custom:auto_cycle="true"            custom:indicator_visibility="visible"            custom:pager_animation_span="1100"            />        <com.cjj.MaterialRefreshLayout            android:id="@+id/refresh_layout"            android:layout_width="match_parent"            android:layout_height="match_parent"            android:layout_marginTop="10dp"            app:overlay="false"            app:wave_show="false"            app:progress_colors="@array/material_colors"            app:wave_height_type="higher"            app:progress_show_circle_backgroud="false"            >            <android.support.v7.widget.RecyclerView                android:id="@+id/recyclerview_wares"                android:layout_width="match_parent"                android:layout_height="match_parent">            </android.support.v7.widget.RecyclerView>        </com.cjj.MaterialRefreshLayout>    </LinearLayout></LinearLayout>



2.一级菜单Adapter

package cniao5.com.cniao5shop.adapter;import android.content.Context;import java.util.List;import cniao5.com.cniao5shop.R;import cniao5.com.cniao5shop.bean.Category;/** *一级菜单Adapter */public class CategoryAdapter extends SimpleAdapter<Category> {    public CategoryAdapter(Context context, List<Category> datas) {        super(context, R.layout.template_single_text, datas);    }    @Override    protected void convert(BaseViewHolder viewHoder, Category item) {        viewHoder.getTextView(R.id.textView).setText(item.getName());    }}


3.二级菜单Adapter

package cniao5.com.cniao5shop.adapter;import android.content.Context;import android.net.Uri;import com.facebook.drawee.view.SimpleDraweeView;import java.util.List;import cniao5.com.cniao5shop.R;import cniao5.com.cniao5shop.bean.Wares;/** *二级菜单Adapter */public class WaresAdapter extends SimpleAdapter<Wares> {    public WaresAdapter(Context context, List<Wares> datas) {        super(context, R.layout.template_grid_wares, datas);    }    @Override    protected void convert(BaseViewHolder viewHoder, Wares item) {        viewHoder.getTextView(R.id.text_title).setText(item.getName());        viewHoder.getTextView(R.id.text_price).setText("¥"+item.getPrice());        SimpleDraweeView draweeView = (SimpleDraweeView) viewHoder.getView(R.id.drawee_view);        draweeView.setImageURI(Uri.parse(item.getImgUrl()));    }}


4.CategoryFragment

package cniao5.com.cniao5shop.fragment;import android.os.Bundle;import android.support.v4.app.Fragment;import android.support.v7.widget.DefaultItemAnimator;import android.support.v7.widget.GridLayoutManager;import android.support.v7.widget.LinearLayoutManager;import android.support.v7.widget.RecyclerView;import android.view.LayoutInflater;import android.view.View;import android.view.ViewGroup;import com.cjj.MaterialRefreshLayout;import com.cjj.MaterialRefreshListener;import com.daimajia.slider.library.Animations.DescriptionAnimation;import com.daimajia.slider.library.SliderLayout;import com.daimajia.slider.library.SliderTypes.BaseSliderView;import com.daimajia.slider.library.SliderTypes.DefaultSliderView;import com.lidroid.xutils.ViewUtils;import com.lidroid.xutils.view.annotation.ViewInject;import com.squareup.okhttp.Request;import com.squareup.okhttp.Response;import java.util.List;import cniao5.com.cniao5shop.Contants;import cniao5.com.cniao5shop.R;import cniao5.com.cniao5shop.adapter.BaseAdapter;import cniao5.com.cniao5shop.adapter.CategoryAdapter;import cniao5.com.cniao5shop.adapter.WaresAdapter;import cniao5.com.cniao5shop.adapter.decoration.DividerGridItemDecoration;import cniao5.com.cniao5shop.adapter.decoration.DividerItemDecoration;import cniao5.com.cniao5shop.bean.Banner;import cniao5.com.cniao5shop.bean.Category;import cniao5.com.cniao5shop.bean.Page;import cniao5.com.cniao5shop.bean.Wares;import cniao5.com.cniao5shop.http.BaseCallback;import cniao5.com.cniao5shop.http.OkHttpHelper;import cniao5.com.cniao5shop.http.SpotsCallBack;public class CategoryFragment extends Fragment {    @ViewInject(R.id.recyclerview_category)    private RecyclerView mRecyclerView;    @ViewInject(R.id.recyclerview_wares)    private RecyclerView mRecyclerviewWares;    @ViewInject(R.id.refresh_layout)    private MaterialRefreshLayout mRefreshLaout;    @ViewInject(R.id.slider)    private  SliderLayout mSliderLayout;    private CategoryAdapter mCategoryAdapter;    private WaresAdapter mWaresAdatper;    private OkHttpHelper mHttpHelper = OkHttpHelper.getInstance();    private int currPage=1;    private int totalPage=1;    private int pageSize=10;    private long category_id=0;    private  static final int STATE_NORMAL=0;    private  static final int STATE_REFREH=1;    private  static final int STATE_MORE=2;    private int state=STATE_NORMAL;    public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) {        View view = inflater.inflate(R.layout.fragment_category,container,false);        ViewUtils.inject(this,view);        requestCategoryData();        requestBannerData();        initRefreshLayout();        return  view;    }    private  void initRefreshLayout(){        mRefreshLaout.setLoadMore(true);        mRefreshLaout.setMaterialRefreshListener(new MaterialRefreshListener() {            @Override            public void onRefresh(MaterialRefreshLayout materialRefreshLayout) {                refreshData();            }            @Override            public void onRefreshLoadMore(MaterialRefreshLayout materialRefreshLayout) {                if(currPage <=totalPage)                    loadMoreData();                else{//                    Toast.makeText()                    mRefreshLaout.finishRefreshLoadMore();                }            }        });    }    private  void refreshData(){        currPage =1;        state=STATE_REFREH;        requestWares(category_id);    }    private void loadMoreData(){        currPage = ++currPage;        state = STATE_MORE;        requestWares(category_id);    }    //获取一级菜单数据    private  void requestCategoryData(){        mHttpHelper.get(Contants.API.CATEGORY_LIST, new SpotsCallBack<List<Category>>(getContext()) {            @Override            public void onSuccess(Response response, List<Category> categories) {                showCategoryData(categories);                if(categories !=null && categories.size()>0)                    category_id = categories.get(0).getId();                    requestWares(category_id);            }            @Override            public void onError(Response response, int code, Exception e) {            }        });    }//显示一级菜单    private  void showCategoryData(List<Category> categories){        mCategoryAdapter = new CategoryAdapter(getContext(),categories);        mCategoryAdapter.setOnItemClickListener(new BaseAdapter.OnItemClickListener() {            @Override            public void onItemClick(View view, int position) {                Category category = mCategoryAdapter.getItem(position);                category_id = category.getId();                currPage=1;                state=STATE_NORMAL;                requestWares(category_id);            }        });        mRecyclerView.setAdapter(mCategoryAdapter);        mRecyclerView.setLayoutManager(new LinearLayoutManager(getContext()));        mRecyclerView.setItemAnimator(new DefaultItemAnimator());        mRecyclerView.addItemDecoration(new DividerItemDecoration(getContext(),DividerItemDecoration.VERTICAL_LIST));    }    //获取轮播条数据    private void requestBannerData( ) {       String url = Contants.API.BANNER+"?type=1";        mHttpHelper.get(url, new SpotsCallBack<List<Banner>>(getContext()){            @Override            public void onSuccess(Response response, List<Banner> banners) {                showSliderViews(banners);            }            @Override            public void onError(Response response, int code, Exception e) {            }        });    }   //显示轮播条    private void showSliderViews(List<Banner> banners){        if(banners !=null){            for (Banner banner : banners){                //DefaultSliderView只有图片展示,不含图片                DefaultSliderView sliderView = new DefaultSliderView(this.getActivity());                sliderView.image(banner.getImgUrl());                sliderView.description(banner.getName());                sliderView.setScaleType(BaseSliderView.ScaleType.Fit);                mSliderLayout.addSlider(sliderView);            }        }        //指示器的效果        mSliderLayout.setPresetIndicator(SliderLayout.PresetIndicators.Center_Bottom);        mSliderLayout.setCustomAnimation(new DescriptionAnimation());//轮播效果        mSliderLayout.setPresetTransformer(SliderLayout.Transformer.Default);        mSliderLayout.setDuration(3000);    }    //根据点击的一级菜单获取相关的数据    private void requestWares(long categoryId){        String url = Contants.API.WARES_LIST+"?categoryId="+categoryId+"&curPage="+currPage+"&pageSize="+pageSize;        mHttpHelper.get(url, new BaseCallback<Page<Wares>>() {            @Override            public void onBeforeRequest(Request request) {            }            @Override            public void onFailure(Request request, Exception e) {            }            @Override            public void onResponse(Response response) {            }            @Override            public void onSuccess(Response response, Page<Wares> waresPage) {                currPage = waresPage.getCurrentPage();                totalPage =waresPage.getTotalPage();                showWaresData(waresPage.getList());            }            @Override            public void onError(Response response, int code, Exception e) {            }        });    }    //显示商品列表    private  void showWaresData(List<Wares> wares){        switch (state){            case  STATE_NORMAL:                if(mWaresAdatper ==null) {                    mWaresAdatper = new WaresAdapter(getContext(), wares);                    mRecyclerviewWares.setAdapter(mWaresAdatper);                    //采用GridView                    mRecyclerviewWares.setLayoutManager(new GridLayoutManager(getContext(), 2));                    mRecyclerviewWares.setItemAnimator(new DefaultItemAnimator());                    mRecyclerviewWares.addItemDecoration(new DividerGridItemDecoration(getContext()));                }                else{                    mWaresAdatper.clear();                    mWaresAdatper.addData(wares);                }                break;            case STATE_REFREH:                mWaresAdatper.clear();                mWaresAdatper.addData(wares);                mRecyclerviewWares.scrollToPosition(0);                mRefreshLaout.finishRefresh();                break;            case STATE_MORE:                mWaresAdatper.addData(mWaresAdatper.getDatas().size(),wares);                mRecyclerviewWares.scrollToPosition(mWaresAdatper.getDatas().size());                mRefreshLaout.finishRefreshLoadMore();                break;        }    }}


0 0