xrecyclerview多条目布局
来源:互联网 发布:kylin apache 编辑:程序博客网 时间:2024/06/05 06:37
1.导入依赖包
` compile 'com.jcodecraeer:xrecyclerview:1.3.2'
2.布局文件
<com.jcodecraeer.xrecyclerview.XRecyclerView android:id="@+id/home_xrcv" android:layout_below="@id/seach_top" android:layout_width="match_parent" android:layout_height="match_parent"> </com.jcodecraeer.xrecyclerview.XRecyclerView>
4.加载布局管理器
//加布局管理器 LinearLayoutManager layoutManager=new LinearLayoutManager(getActivity()); layoutManager.setOrientation(LinearLayoutManager.VERTICAL); homeXrcv.setLayoutManager(layoutManager);
5.设置 上拉加载下拉刷新的功能,
//设置上拉和下拉监听 homeXrcv.setLoadingListener(new XRecyclerView.LoadingListener() { @Override public void onRefresh() { //refresh data here //刷新时清空 curr=0; list.clear(); getData(API.TYPE_HOME,curr); //刷新控件 homeXrcv.refreshComplete(); } @Override public void onLoadMore() { // load more data here //分页加载时使用 /* curr++; getData(API.TYPE_HOME,curr); xr.refreshComplete();*/ } }); //加载数据 getData(API.TYPE_HOME,curr);
6.最关键的一步来了添加适配器
package sizu.nanshigou.adapter;import android.content.Context;import android.support.v7.widget.DefaultItemAnimator;import android.support.v7.widget.RecyclerView;import android.support.v7.widget.StaggeredGridLayoutManager;import android.view.LayoutInflater;import android.view.View;import android.view.ViewGroup;import android.widget.ImageView;import android.widget.TextView;import com.nostra13.universalimageloader.core.ImageLoader;import com.youth.banner.Banner;import java.util.ArrayList;import java.util.List;import butterknife.BindView;import butterknife.ButterKnife;import cn.iwgang.countdownview.CountdownView;import sizu.nanshigou.Bean.HomeBean;import sizu.nanshigou.R;import sizu.nanshigou.view.GlideImageLoader;import sizu.nanshigou.view.SpacesItemDecoration;public class XRAdapter extends RecyclerView.Adapter<RecyclerView.ViewHolder> { HomeBean.DataBean data; Context mcontext; ArrayList mlist; ArrayList bannerlist; //枚举类型 private enum Item_Type { Typeone, Typetwo, Typethree, Typefour, Typefive } //构造方法 public XRAdapter(HomeBean.DataBean data, Context mcontext) { this.data = data; this.mcontext = mcontext; } /** * 创建ViewHolder * * @param parent * @param viewType :不同ItemView的类型加载布局 * @return */ @Override public RecyclerView.ViewHolder onCreateViewHolder(ViewGroup parent, int viewType) { if (viewType == Item_Type.Typeone.ordinal()) { View mView = LayoutInflater.from(mcontext).inflate(R.layout.recycle_item_a, null); ViewHolderA viewHolder = new ViewHolderA(mView); return viewHolder; } else if (viewType == Item_Type.Typetwo.ordinal()) { View mView = LayoutInflater.from(mcontext).inflate(R.layout.recycle_item_b, null); ViewHolderB viewHolder = new ViewHolderB(mView); return viewHolder; } else if (viewType == Item_Type.Typethree.ordinal()) { View mView = LayoutInflater.from(mcontext).inflate(R.layout.recycle_item_c, null); ViewHolderC viewHolder = new ViewHolderC(mView); return viewHolder; } else if (viewType == Item_Type.Typefour.ordinal()) { View mView = LayoutInflater.from(mcontext).inflate(R.layout.recycle_item_d, null); ViewHolderD viewHolder = new ViewHolderD(mView); return viewHolder; } else if (viewType == Item_Type.Typefive.ordinal()) { View mView = LayoutInflater.from(mcontext).inflate(R.layout.recycle_item_e, null); ViewHolderE viewHolder = new ViewHolderE(mView); return viewHolder; } return null; } /** * 绑定数据:可以直接拿到已经绑定控件的Viewholder对象 * * @param holder * @param position */ @Override public void onBindViewHolder(RecyclerView.ViewHolder holder, int position) { //判断条目类型 if (holder instanceof ViewHolderA) { mlist = new ArrayList(); for (int i = 0; i < data.getAd1().size(); i++) { mlist.add(data.getAd1().get(i).getImage()); } //设置banner图片加载器 ((ViewHolderA) holder).mbanner.setImageLoader(new GlideImageLoader()); ((ViewHolderA) holder).mbanner.setImages(mlist); ((ViewHolderA) holder).mbanner.start(); } else if (holder instanceof ViewHolderB) { //给子布局的控件传值 ImageLoader.getInstance().displayImage(data.getAd5().get(0).getImage(), ((ViewHolderB) holder).homeClassifiledImg1); ((ViewHolderB) holder).homeClassifiledText1.setText(data.getAd5().get(0).getTitle()); } else if (holder instanceof ViewHolderC) { ((ViewHolderC) holder).countdownView.start(555555555); ((ViewHolderC) holder).tvc.setText("热门活动"); ImageLoader.getInstance().displayImage(data.getActivityInfo().getActivityInfoList().get(0).getActivityImg(), ((ViewHolderC) holder).tvcHotImg1); ImageLoader.getInstance().displayImage(data.getActivityInfo().getActivityInfoList().get(1).getActivityImg(), ((ViewHolderC) holder).tvcHotImg2); } else if (holder instanceof ViewHolderD) { bannerlist = new ArrayList<>(); for (int i = 0; i < data.getSubjects().size(); i++) { bannerlist.add(data.getSubjects().get(i).getImage()); } ((ViewHolderD) holder).reItemdText.setText("热门专题"); ((ViewHolderD) holder).itemdMybanner.setImageLoader(new GlideImageLoader()); ((ViewHolderD) holder).itemdMybanner.setImages(bannerlist); ((ViewHolderD) holder).itemdMybanner.start(); } else if (holder instanceof ViewHolderE) { //设置layoutManager ((ViewHolderE) holder).recyclerView.setLayoutManager(new StaggeredGridLayoutManager(2, StaggeredGridLayoutManager.VERTICAL)); // 设置item动画 ((ViewHolderE) holder).recyclerView.setItemAnimator(new DefaultItemAnimator()); //设置item之间的间隔 SpacesItemDecoration decoration=new SpacesItemDecoration(16); ((ViewHolderE) holder).recyclerView.addItemDecoration(decoration); List<HomeBean.DataBean.DefaultGoodsListBean> defaultGoodsList = data.getDefaultGoodsList(); ((ViewHolderE) holder).recyclerView.setAdapter( new MasonryAdapter(mcontext,defaultGoodsList)); } } //得到item的数量 @Override public int getItemCount() { return 5; } //得到viewType类型 返回值赋值给onCreateViewHolder的参数 @Override public int getItemViewType(int position) { // return super.getItemViewType(position); //根据下标判断类型返回布局 if (position == 0) { return Item_Type.Typeone.ordinal(); } else if (position == 1) { return Item_Type.Typetwo.ordinal(); } else if (position == 2) { return Item_Type.Typethree.ordinal(); } else if (position == 3) { return Item_Type.Typefour.ordinal(); } else if (position == 4) { return Item_Type.Typefive.ordinal(); } return -1; } class ViewHolderA extends RecyclerView.ViewHolder { public Banner mbanner; public ViewHolderA(View itemView) { super(itemView); mbanner = (Banner) itemView.findViewById(R.id.mybanner); } } class ViewHolderB extends RecyclerView.ViewHolder { //得到控件 @BindView(R.id.home_classifiled_img1) ImageView homeClassifiledImg1; @BindView(R.id.home_classifiled_text1) TextView homeClassifiledText1; public ViewHolderB(View itemView) { super(itemView); //初始化ButterKnife ButterKnife.bind(this, itemView); } } class ViewHolderC extends RecyclerView.ViewHolder { @BindView(R.id.tvc) TextView tvc; @BindView(R.id.countdownView) CountdownView countdownView; @BindView(R.id.tvc_hot_img1) ImageView tvcHotImg1; @BindView(R.id.tvc_hot_img2) ImageView tvcHotImg2; public ViewHolderC(View itemView) { super(itemView); ButterKnife.bind(this, itemView); } } class ViewHolderD extends RecyclerView.ViewHolder { @BindView(R.id.itemd_mybanner) Banner itemdMybanner; @BindView(R.id.re_itemd_text) TextView reItemdText; public ViewHolderD(View itemView) { super(itemView); ButterKnife.bind(this, itemView); } } class ViewHolderE extends RecyclerView.ViewHolder { @BindView(R.id.id_recyclerview) RecyclerView recyclerView; public ViewHolderE(View itemView) { super(itemView); ButterKnife.bind(this, itemView); } }}
7.最后一步网络请求数据里添加适配器
点击 Okhttp网络请求封装使用
private void getData(String url,int curr) {
OkHttp3Utils.getInstance().doGet(url, new GsonObjectCallback<HomeBean>() { @Override public void onUi(HomeBean homeBean) { homeBean.getMsg(); //添加适配器 XRAdapter mxradapter=new XRAdapter(homeBean.getData(),getActivity()); homeXrcv.setAdapter(mxradapter); } @Override public void onFailed(Call call, IOException e) { } });}
点击这里是github源码地址
8.最后的结果
阅读全文
0 0
- xrecyclerview多条目布局
- XRecyclerView 多条目加载
- XRecyclerView多条目加载
- Android——XRecyclerView实现上拉下拉,多条目布局
- XRecyclerView多布局
- XRecyclerView多布局2
- xRecyclerView的刷新,加载更多,多条目
- Android XRecyclerView(多条目加载实现)
- MVP实现xRecyclerview多条目加载
- xrecyclerview实现两种多条目
- XRecyclerView+上拉加载下拉刷新+多条目加载
- XRecyclerView的多条目加载(banner+列表)
- MVP泛型+xRecyclerView+Retrofit+OkHttp+RxJava多条目,横向
- 多条目布局
- 多条目布局
- 多条目布局
- recyclerView多条目布局
- Xlistview实现多条目布局
- 10.25
- 综合题1 Handler3秒跳转+ViewPager导航+F1+F2(无)
- 使用HttpUrlConnection+Handler几秒钟更换一次信息,使用HttpClient+AsyncTask请求列表信息
- 单例的双重校验加锁方法创建对象变量为什么要加volatile关键字
- android listview实现新闻列表展示效果
- xrecyclerview多条目布局
- fragment_a
- 购物车
- 熊猫学猿--(第七竹--常使用的条件语句if)
- angularjs-增删改查+排序
- 详解centos6和centos7防火墙的关闭
- gartner 魔力象限
- fragment_b
- 没有侧滑菜单的一个案例