商城之商品分类
来源:互联网 发布:全校第一知乎 编辑:程序博客网 时间: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
- 商城之商品分类
- 商城之首页商品分类
- 商城之主页商品分类重构
- 商城开发之商品分类表的设计、使用、管理
- 淘宝商城商品分类特效代码
- 商城之商品列表
- 商城之商品分享
- 仿京东商城商品分类搜索功能
- 京东商城的商品分类代码
- 商城系统03-商品分类总结
- 微信小程序之商品属性分类 —— 微信小程序实战商城系列(4)
- 淘淘商城之商品添加功能实现
- B2B2C商城系统 如何实现商品分类功能
- 商城开发之商城上传商品-webuploder上传商品图片篇
- Java80商城系统第四节-商品分类和商品后台管理
- 微信小程序之商城分类详情
- [微信小程序]商城之购买商品数量实现
- 购物商城商品页面
- Node.js使用qq邮箱实现邮件发送
- python挑战之level 33
- TankWar 单机(JAVA版)优化炮杆和坦克移动方向不一致
- 【牛腩新闻发布系统】网页计时跳转Demo
- include与jsp:include区别
- 商城之商品分类
- OpenCV Python教程(1、图像的载入、显示和保存)
- JSP和Servlet的六种中文乱码处理方法
- git rebase简介(基本篇)
- zookeeper基本知识和基本使用
- 集群外机器做producer往kafka里写消息
- Oracle监听配置及访问方式完全解析
- 异常收集
- 操作系统一些基本知识