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); } } }