16.二级商品列表实现(和一级差不多,直接附上源代码)

fragmnet页面:

package zuo.com.ui.fragment;

import android.os.Bundle;
import android.support.annotation.Nullable;
import android.support.v4.app.Fragment;
import android.support.v7.widget.GridLayoutManager;
import android.support.v7.widget.LinearLayoutManager;
import android.support.v7.widget.RecyclerView;
import android.util.Log;
import android.view.LayoutInflater;
import android.view.View;
import android.view.ViewGroup;
import android.widget.Toast;

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.TextSliderView;
import com.squareup.okhttp.OkHttpClient;
import com.squareup.okhttp.Response;

import java.util.ArrayList;
import java.util.List;

import zuo.com.ui.R;
import zuo.com.ui.adapter.CategoryAdapter;
import zuo.com.ui.adapter.CategoryTwoAdapter;
import zuo.com.ui.bean.Banner;
import zuo.com.ui.bean.CategoryBean;
import zuo.com.ui.bean.CategoryTotalBean;
import zuo.com.ui.decoration.HomeItemDecoration;
import zuo.com.ui.http.OkHttpHelper;
import zuo.com.ui.http.SpotsCallBack;

/**
 * Created by Administrator on 2016/10/6.
 */
public class CategoryFragment extends Fragment {
    private CategoryTotalBean categoryTotalBean;
    private LayoutInflater layoutInflater;
    private RecyclerView recyclerView;
    private OkHttpHelper httpHelper=OkHttpHelper.getInstance();
    private List<CategoryBean> list=new ArrayList<>();
    private CategoryAdapter categoryAdapter;
    private SliderLayout sliderLayout;
    private List<Banner> banners;
    private RecyclerView recyclerViewTwo;

    private int currPage=1;
    private int pageSize=10;
    private int categoryId=1;

    private CategoryTwoAdapter categoryTwoAdapter;
   //上拉下拉常量
    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;

    private MaterialRefreshLayout materialRefreshLayout;



    @Nullable
    @Override
    public View onCreateView(LayoutInflater inflater, @Nullable ViewGroup container, @Nullable Bundle savedInstanceState) {
        layoutInflater=LayoutInflater.from(getContext());
        View view=layoutInflater.inflate(R.layout.fragment_cagetory,container,false);
        recyclerView= (RecyclerView) view.findViewById(R.id.fragment_category_recycler_view);
        sliderLayout= (SliderLayout) view.findViewById(R.id.fragment_category_slider);
        recyclerViewTwo= (RecyclerView) view.findViewById(R.id.fragment_category_recycler_item);
        materialRefreshLayout= (MaterialRefreshLayout) view.findViewById(R.id.fragment_category_material);
        initLeftData();
        initSliderData();
        initRecyclerTwoData();
        initMaterialLayout();
        return view;
    }

    private void initMaterialLayout(){
        materialRefreshLayout.setLoadMore(true);
        materialRefreshLayout.setMaterialRefreshListener(new MaterialRefreshListener() {
            @Override           //下拉刷新
            public void onRefresh(MaterialRefreshLayout materialRefreshLayout) {

                refreshDataMaterial();

            }

            @Override             //上拉刷新
            public void onRefreshLoadMore(MaterialRefreshLayout materialRefreshLayout) {
                super.onRefreshLoadMore(materialRefreshLayout);
                loadDataMaterial();
            }
        });
    }
   //下拉刷新
    private void refreshDataMaterial() {
         if(currPage<2){
             currPage+=1;
             state=STATE_REFREH;
             initRecyclerTwoData();
         }else{
             currPage=2;
             state=STATE_REFREH;
             initRecyclerTwoData();
             Toast.makeText(getContext(),"不能加载更多",Toast.LENGTH_SHORT).show();
         }
    }

    //上拉刷新控件,属性出数据
    private void loadDataMaterial(){
        if(currPage>0){
            currPage=currPage-1;
            state=STATE_MORE;
            initRecyclerTwoData();
        }else{
            state=STATE_MORE;
            initRecyclerTwoData();
            Toast.makeText(getContext(),"不能加载更多",Toast.LENGTH_SHORT).show();
        }
    }

    //初始化左边的recyclerview
    private void initLeftData() {
        String url="http://112.124.22.238:8081/course_api/category/list";
        httpHelper.get(url, new SpotsCallBack<List<CategoryBean>>(getContext()){


            @Override
            public void onSuccess(Response response, List<CategoryBean> categoryBeen) {
                list=categoryBeen;
//                for(CategoryBean c:list){
//                  Log.d("Category's name",c.getName());
//                }
                initRecyclerView();
            }

            @Override
            public void onError(Response response, int code, Exception e) {

            }
        });

    }
    private void initRecyclerView(){
        categoryAdapter=new CategoryAdapter(list);
        recyclerView.setAdapter(categoryAdapter);

        //必须写才能出现recyclorView,也可以是GirdLayoutManager,只是显示item的图形不一样
        recyclerView.setLayoutManager(new LinearLayoutManager(getContext()));

        categoryAdapter.setOnItemClickListener(new CategoryAdapter.OnItemClickListener() {
            @Override
            public void onClick(View v, CategoryBean categoryBean) {
          //      Toast.makeText(getContext(),categoryBean.getId()+"",Toast.LENGTH_SHORT).show();
                categoryId=categoryBean.getId();
                state=STATE_NORMAL;
                currPage=1;
                initRecyclerTwoData();

            }
        });

    }
//获取slider中的数据,并且赋值
    private void initSliderData(){
        String url ="http://112.124.22.238:8081/course_api/banner/query?type=1";
        httpHelper.get(url, new SpotsCallBack<List<Banner>>(getContext()) {


            @Override
            public void onSuccess(Response response, List<Banner> mbanners) {
                banners=mbanners;
                initSliderLayout();
            }

            @Override
            public void onError(Response response, int code, Exception e) {

            }
        });
    }
//创建slider对象
    private void initSliderLayout(){
        for(Banner b:banners)
        {
            TextSliderView textSliderView = new TextSliderView(this.getActivity());
            textSliderView
                    .description(b.getDescription())
                    .image(b.getImgUrl());
            sliderLayout.addSlider(textSliderView);
        }
        sliderLayout.setPresetIndicator(SliderLayout.PresetIndicators.Center_Bottom);      //设置下标的点,所在的位置在底部正中间
        sliderLayout.setCustomAnimation(new DescriptionAnimation());
        sliderLayout.setPresetTransformer(SliderLayout.Transformer.Default);              //设置转动模式,下面的文字说明自动出来
        sliderLayout.setDuration(3000);              //设置动画效果3秒自动转动
    }

    //获取第二个recyclerview中的数据

    private void initRecyclerTwoData(){

        String url="http://112.124.22.238:8081/course_api/wares/list"+"?curPage="+currPage+"&pageSize="+pageSize+"&categoryId="+categoryId;
        httpHelper.get(url, new SpotsCallBack<CategoryTotalBean>(getContext()) {


            @Override
            public void onSuccess(Response response, CategoryTotalBean mcategoryTotalBean) {
                categoryTotalBean=mcategoryTotalBean;
                initRecyclerViewTwo();
            }

            @Override
            public void onError(Response response, int code, Exception e) {

            }
        });


    }
    private void initRecyclerViewTwo(){
        switch (state) {
            case STATE_NORMAL:
            categoryTwoAdapter = new CategoryTwoAdapter(categoryTotalBean);
            recyclerViewTwo.setAdapter(categoryTwoAdapter);
            recyclerViewTwo.setLayoutManager(new GridLayoutManager(getContext(),2));

            //设置分割线,这个分割线不能用,在recyclerview中嵌套recyclerview使用的时候回越来越大
            // recyclerView.addItemDecoration(new HomeItemDecoration());
                break;
            case STATE_REFREH:
                categoryTwoAdapter = new CategoryTwoAdapter(categoryTotalBean);
                recyclerViewTwo.setAdapter(categoryTwoAdapter);
                recyclerViewTwo.setLayoutManager(new GridLayoutManager(getContext(),2));
                recyclerViewTwo.scrollToPosition(0);
                materialRefreshLayout.finishRefresh();
                break;
            case STATE_MORE:
                categoryTwoAdapter = new CategoryTwoAdapter(categoryTotalBean);
                recyclerViewTwo.setAdapter(categoryTwoAdapter);
                recyclerViewTwo.setLayoutManager(new GridLayoutManager(getContext(),2));
                recyclerViewTwo.scrollToPosition(categoryTotalBean.getList().size());
                materialRefreshLayout.finishRefreshLoadMore();


        }
        }


}

两个adapter代码:

package zuo.com.ui.adapter;

import android.support.v7.widget.RecyclerView;
import android.view.LayoutInflater;
import android.view.View;
import android.view.ViewGroup;
import android.widget.LinearLayout;
import android.widget.TextView;

import org.w3c.dom.Text;

import java.util.List;

import zuo.com.ui.R;
import zuo.com.ui.bean.CategoryBean;

/**左边Adapter
 * Created by Administrator on 2016/10/14.
 */
public class CategoryAdapter extends RecyclerView.Adapter<CategoryAdapter.ViewHolder> {
    private LayoutInflater layoutInflater;
    private View view;
    private List<CategoryBean> list;
    private LinearLayout linearLayout;


    public CategoryAdapter(List<CategoryBean> list){
        this.list=list;
    }

    public OnItemClickListener listener;              //创建item监听器对象

    public  void setOnItemClickListener(OnItemClickListener listener){            //创建构造函数
        this.listener=listener;
    }


    @Override
    public ViewHolder onCreateViewHolder(ViewGroup parent, int viewType) {
        layoutInflater=LayoutInflater.from(parent.getContext());
        view=layoutInflater.inflate(R.layout.fragment_category_item,parent,false);

        return new ViewHolder(view);
    }

    @Override
    public void onBindViewHolder(ViewHolder holder, int position) {
        CategoryBean categoryBean=list.get(position);
        holder.textView.setText(categoryBean.getName());

    }

    @Override
    public int getItemCount() {
        return list.size();
    }

    class ViewHolder extends RecyclerView.ViewHolder implements View.OnClickListener {
        private TextView textView;

        public ViewHolder(View itemView) {
            super(itemView);
            textView= (TextView) itemView.findViewById(R.id.text_view_recycler_item);
            textView.setOnClickListener(this);
        }

        @Override
        public void onClick(View v) {
            if (listener != null) {
                switch (v.getId()) {
                    case R.id.text_view_recycler_item:
                        listener.onClick(v,list.get(getLayoutPosition()));
                        break;
                    default:
                        break;

                }
            }
        }
    }

    //创建recyclorview的监听事件
    public interface OnItemClickListener{
        void onClick(View v,CategoryBean categoryBean);
    }
}


package zuo.com.ui.adapter;

import android.net.Uri;
import android.support.v7.widget.RecyclerView;
import android.util.Log;
import android.view.LayoutInflater;
import android.view.View;
import android.view.ViewGroup;
import android.widget.TextView;

import com.facebook.drawee.backends.pipeline.Fresco;
import com.facebook.drawee.backends.pipeline.PipelineDraweeController;
import com.facebook.drawee.view.SimpleDraweeView;
import com.facebook.imagepipeline.request.ImageRequest;
import com.facebook.imagepipeline.request.ImageRequestBuilder;

import zuo.com.ui.R;
import zuo.com.ui.bean.CategoryItemBean;
import zuo.com.ui.bean.CategoryTotalBean;

/**第二个recyclerview的适配器
 * Created by Administrator on 2016/10/14.
 */
public class CategoryTwoAdapter extends RecyclerView.Adapter<CategoryTwoAdapter.ViewHolder> {
    private LayoutInflater layoutInflater;

    private CategoryTotalBean categoryTotalBean;

    public CategoryTwoAdapter(CategoryTotalBean categoryTotalBean){
        this.categoryTotalBean=categoryTotalBean;
    }

    @Override
    public ViewHolder onCreateViewHolder(ViewGroup parent, int viewType) {
        layoutInflater=LayoutInflater.from(parent.getContext());
       View view=layoutInflater.inflate(R.layout.fragment_category_item_two,parent,false);
        return new ViewHolder(view);
    }

    @Override
    public void onBindViewHolder(ViewHolder holder, int position) {
        CategoryItemBean categoryItemBean=categoryTotalBean.getList().get(position);
        //使用fresco价值图片
        Uri uri=Uri.parse(categoryItemBean.getImgUrl());
        ImageRequest request = ImageRequestBuilder.newBuilderWithSource(uri)
                .setProgressiveRenderingEnabled(true)
                .build();
        PipelineDraweeController controller = (PipelineDraweeController) Fresco.newDraweeControllerBuilder()
                .setImageRequest(request)
                .build();
        holder.simpleDraweeView.setController(controller);

        holder.textView1.setText(categoryItemBean.getName());

        holder.textView2.setText("¥"+categoryItemBean.getPrice());

    }

    @Override
    public int getItemCount() {

        return categoryTotalBean.getList().size();
    }

    class ViewHolder extends RecyclerView.ViewHolder{
        private SimpleDraweeView simpleDraweeView;
        private TextView textView1,textView2;

        public ViewHolder(View itemView) {
            super(itemView);
           simpleDraweeView= (SimpleDraweeView) itemView.findViewById(R.id.simple_drawee_view);
            textView1= (TextView) itemView.findViewById(R.id.text_view_1);
            textView2= (TextView) itemView.findViewById(R.id.text_view_2);


        }
    }
}

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值