XRecyclerView的多条目请求数据,可以实现上拉加载下拉刷新
2017-10-24 07:29
417 查看
先要添加权限:
先要添加依赖:
主布局的文件:
<uses-permission android:name="android.permission.INTERNET"></uses-permission> <uses-permission android:name="android.permission.READ_EXTERNAL_STORAGE"></uses-permission> <uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE"></uses-permission> <uses-permission android:name="android.permission.ACCESS_NETWORK_STATE"></uses- 4000 permission>
先要添加依赖:
compile 'com.github.bumptech.glide:glide:3.7.0' compile 'com.squareup.okio:okio:1.5.0' compile 'com.squareup.okhttp3:okhttp:3.2.0' compile 'com.squareup.okhttp3:logging-interceptor:3.4.1' compile 'com.google.code.gson:gson:2.8.2' compile 'com.android.support:mediarouter-v7:25.0.0' compile 'com.android.support:appcompat-v7:25.0.0' compile 'com.android.support:recyclerview-v7:25.0.0'
compile 'com.jcodecraeer:xrecyclerview:1.3.2'
主布局的文件:
?xml version="1.0" encoding="utf-8"?> <RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android" xmlns:tools="http://schemas.android.com/tools" android:id="@+id/activity_xreca" android:layout_width="match_parent" android:layout_height="match_parent" > <com.jcodecraeer.xrecyclerview.XRecyclerView android:layout_width="match_parent" android:id="@+id/xre_xrv" android:layout_height="match_parent"> </com.jcodecraeer.xrecyclerview.XRecyclerView> </RelativeLayout>
MainActivity中:(有注释)
public class MainActivity extends AppCompatActivity { private XRecyclerView xr; private int curr;//获取数据开始 private List<String > list=new ArrayList<>(); @Override protected void onCreate(@Nullable Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); //初始化XRecyclerView xr = (XRecyclerView) findViewById(R.id.xre_xrv); //加布局管理器 LinearLayoutManager layoutManager=new LinearLayoutManager(this); layoutManager.setOrientation(LinearLayoutManager.VERTICAL); xr.setLayoutManager(layoutManager); xr.setLoadingListener(new XRecyclerView.LoadingListener() { @Override public void onRefresh() { curr=0; list.clear(); getData(API.HOME_PATH,curr); xr.refreshComplete(); } //初始化数据 @Override public void onLoadMore() { /* curr++; 分页 getData(API.TYPE_HOME,curr); xr.refreshComplete();*/ } }); getData(API.HOME_PATH,curr); } //初始化数据 private void getData(String homePath, int curr) { OkHttp3Utils.getInstance().doGet(homePath, new GsonObjectCallback<OneBean>() { @Override public void onUi(OneBean oneBean) { XRAdapter mxradapter=new XRAdapter(MainActivity.this,oneBean.getData()); xr.setAdapter(mxradapter); } @Override public void onFailed(Call call, IOException e) { } }); } }适配器:(只写了一个轮播的适配)
public class XRAdapter extends RecyclerView.Adapter { OneBean.DataBean data; Context context; ArrayList mlist;//创建一个集合 //使用枚举,创建四个条目格式 private enum Item_Type{ Item_one,Item_two,Item_three,Item_four } public XRAdapter(Context context, OneBean.DataBean data) { this.context = context; this.data = data; } @Override public RecyclerView.ViewHolder onCreateViewHolder(ViewGroup parent, int viewType) { if (viewType == Item_Type.Item_one.ordinal()) { View mView = LayoutInflater.from(context).inflate(R.layout.recycle_item_a, null); ViewHolderA viewHolder = new ViewHolderA(mView); return viewHolder; } else if (viewType == Item_Type.Item_two.ordinal()) { View mView = LayoutInflater.from(context).inflate(R.layout.recycle_item_b, null); ViewHolderB viewHolder = new ViewHolderB(mView); return viewHolder; } else if (viewType == Item_Type.Item_three.ordinal()) { View mView = LayoutInflater.from(context).inflate(R.layout.recycle_item_c, null); ViewHolderC viewHolder = new ViewHolderC(mView); return viewHolder; }else if (viewType == Item_Type.Item_four.ordinal()) { View mView = LayoutInflater.from(context).inflate(R.layout.recycle_item_d, null); ViewHolderD viewHolder = new ViewHolderD(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()); } //设置图片加载器 ((ViewHold c01d erA) holder).getMbanner().setImageLoader(new GlideImaGlideImageLoader()); ((ViewHolderA) holder).getMbanner().setImages(mlist); ((ViewHolderA) holder).getMbanner().start(); } /*else if (holder instanceof ViewHolderB) { ((ViewHolderB) holder).text.setText(list.getDefaultGoodsList().get(position).getGoods_name() + "------样式二"); } else if (holder instanceof ViewHolderC) { ((ViewHolderC) holder).text.setText(list.getDefaultGoodsList().get(position).getGoods_name()+ "------样式三"); }else if (holder instanceof ViewHolderD) { ((ViewHolderD) holder).text.setText(list.getDefaultGoodsList().get(position).getGoods_name()+ "------样式4"); }*/ } @Override public int getItemCount() { return 2; } @Override public int getItemViewType(int position) { if (position == 0) { return Item_Type.Item_one.ordinal(); } else if (position == 1) { return Item_Type.Item_two.ordinal(); } else if (position == 2) { return Item_Type.Item_three.ordinal(); }else if (position == 3) { return Item_Type.Item_four.ordinal(); } return -1; } }
相关文章推荐
- 在Android Studio上使用GSON+VOLLEY,秒处理网络数据成集合。感受框架的力量。搭配RecyclerView和SwipeRefreshLayout,实现底端加载更多,下拉刷新。
- MVP实现Recyclerview加Springview上拉加载下拉刷新点击条目可跳转到购物车
- RecyclerView多条目加载(网络请求数据)
- MVP+Retrofit+RxJava请求网络数据实现RecyclerView多条目展示
- MVP实现用Retrofit请求网络数据Fresco加载图片,Recyclerview CheckBox显示并实现全选删除
- 使用MVP,OKHttp封装类及其拦截器,RecyclerView,SpringView,ImageLoader实现数据的多条目加载
- mvp+retrofit+rxjava xrecyclerview实现多条目 下拉刷新 下拉加载 点击跳转
- 用RecyclerView实现新闻列表页,包括头部的图片轮播,两种Item显示方式,下拉刷新和上拉加载以及限制列表的加载条目数
- OkHttp的网络请求数据和RecyclerView的多条目加载,添加分割线
- RecyclerView展示固定数据、上拉加载更多、下拉刷新、点击事件、长按点击事件、删除条目、刷新条目、添加条目、多条目加载
- RecyclerView条目跳转+SpringView数据刷新加载+MVP+OKhttp+拦截器+自定义view 实现请求网络数据的二级列表购物车
- SwipeRefreshLayout配合RecyclerView实现下拉刷新和上拉加载更多以及没有数据的显示
- SwipeRefreshLayout配合RecyclerView实现下拉刷新和上拉加载更多以及没有数据的显示
- 带你实现开发者头条APP(五)--RecyclerView下拉刷新上拉加载
- 使用SwipeRefreshLayout和RecyclerView实现仿“简书”下拉刷新和上拉加载更多
- Android-RecyclerView使用(三) 实现下拉刷新,上拉自动加载
- Android中使用RecyclerView实现下拉刷新和上拉加载
- iOS不得姐项目--推荐关注模块(一个控制器控制两个tableView),数据重复请求的问题,分页数据的加载,上拉下拉刷新(MJRefresh)
- Android 5.X新特性之为RecyclerView添加下拉刷新和上拉加载及SwipeRefreshLayout实现原理
- Android LRecyclerView实现下拉刷新,滑动到底部自动加载更多