xutils 网络请求框架结合BaseRecyclerViewAdapterHelper万能adapter
来源:互联网 发布:国际象棋对弈软件下载 编辑:程序博客网 时间:2024/06/14 15:53
此文章为了运用xutils网络请求框架加载网络数据 –xUtils攻略和玩法,并且通过Gson解析加载数据实现上啦加载和下拉刷新BaseRecyclerViewAdapterHelper,它只能和RecyclerView相结合使用。
效果图如下:
1.项目开始要找到xUtils 依赖
compile 'org.xutils:xutils:3.5.0'
2.BaseRecyclerViewAdapterHelper 依赖
compile 'com.android.support.constraint:constraint-layout:1.0.2'compile 'com.github.CymChad:BaseRecyclerViewAdapterHelper:2.9.9'compile 'com.android.support:recyclerview-v7:25.2.0'
3.gson依赖
compile 'com.google.code.gson:gson:2.8.0'
4.加上相应权限
<uses-permission android:name="android.permission.INTERNET" /><uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE" />
那我们就贴入相应代码我项目中的xutils 是jar包在libs目录下 可能和上面xutils 有冲突
布局文件 activity_db2.xml
<?xml version="1.0" encoding="utf-8"?><LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" android:layout_width="match_parent" android:layout_height="match_parent" android:orientation="vertical"> <android.support.v4.widget.SwipeRefreshLayout android:id="@+id/swipeLayout" android:layout_width="match_parent" android:layout_height="match_parent" android:orientation="vertical"> <android.support.v7.widget.RecyclerView android:id="@+id/list_view" android:layout_width="match_parent" android:layout_height="fill_parent" android:fadingEdge="none" android:overScrollMode="never" android:scrollbars="none"></android.support.v7.widget.RecyclerView> </android.support.v4.widget.SwipeRefreshLayout></LinearLayout>
注意:android.support.v4.widget.SwipeRefreshLayout 是android 5.0下啦刷新的新特性。在此我们就不多讲
activity代码如下:
public class DBActivity2 extends AppCompatActivity implements SwipeRefreshLayout.OnRefreshListener, BaseQuickAdapter.RequestLoadMoreListener{ private SwipeRefreshLayout swipeLayout; private RecyclerView recyclerView; private BaseRecyclerViewAdapter<DataBean> mAdapter; private List<DataBean> list = new ArrayList<>(); private List<DataBean> mlist2 = new ArrayList<>(); private int pageNo = 1; private int status; // 0 正常加载更多, 1 加载完成 , 2 加载失败。 private Button btn; private Button delete_btn; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_db2); initView(); initData(pageNo); initAdapter(); } private void initView() { delete_btn= (Button) findViewById(R.id.delete_btn); btn = (Button) findViewById(R.id.btn); swipeLayout = (SwipeRefreshLayout) findViewById(R.id.swipeLayout); recyclerView = (RecyclerView) findViewById(R.id.list_view); swipeLayout.setOnRefreshListener(this); } private void initAdapter() { mAdapter = new BaseRecyclerViewAdapter<DataBean>(R.layout.list_item, list) { @Override protected void convert(BaseViewHolder helper, final DataBean item) { helper.setText(R.id.package_name, item.getTitle()); helper.getLayoutPosition(); helper.getView(R.id.item_btn).setOnClickListener(new View.OnClickListener() { @Override public void onClick(View v) { Toast.makeText(getApplicationContext(),"dianji",Toast.LENGTH_SHORT).show(); } }); } }; mAdapter.setEnableLoadMore(true); mAdapter.setOnLoadMoreListener(this, recyclerView); recyclerView.setLayoutManager(new LinearLayoutManager(this)); recyclerView.setAdapter(mAdapter); } private void initData(final int pageNo) { HttpUtils httpUtils = new HttpUtils(); RequestParams params = new RequestParams(); params.addBodyParameter("uid", "0"); params.addBodyParameter("type", "1"); params.addBodyParameter("page", String.valueOf(pageNo)); httpUtils.send(HttpMethod.POST, "http://api.kuyou001.com/api/gift/giftlist", params, new RequestCallBack<String>() { @Override public void onSuccess(ResponseInfo<String> responseInfo) { String s = responseInfo.result; if (pageNo == 1) { list.clear(); } MyData bean = new Gson().fromJson(s, MyData.class); list.addAll(bean.getData().getContent()); if (bean.getData().getContent().size() == 0 || bean.getData().getContent().isEmpty() || bean.getData().getContent() == null) { status = 1; } else { status = 0; mAdapter.setNewData(list); } } @Override public void onFailure(HttpException e, String s) { status = 2; } }); } //上拉加载 @Override public void onLoadMoreRequested() { swipeLayout.setEnabled(false); new Handler().postDelayed(new Runnable() { @Override public void run() { swipeLayout.setEnabled(true); switch (status) { case 0: pageNo++; initData(pageNo); mAdapter.setNewData(list); mAdapter.loadMoreComplete(); break; case 1: pageNo++; initData(pageNo); mAdapter.setNewData(list); mAdapter.loadMoreEnd(); break; case 2: mAdapter.loadMoreFail(); break; } } }, 100); } //下啦刷新 @Override public void onRefresh() { mAdapter.setEnableLoadMore(false); new Handler().postDelayed(new Runnable() { @Override public void run() { pageNo = 1; mAdapter.setNewData(list); swipeLayout.setRefreshing(false); mAdapter.setEnableLoadMore(true); } }, 100); }}
注意:BaseRecyclerViewAdapter这个类是对BaseQuickAdapter再次封装的类
public abstract class BaseRecyclerViewAdapter<T> extends BaseQuickAdapter<T , BaseViewHolder> { public BaseRecyclerViewAdapter(int layoutResId, List<T> data) { super(layoutResId, data); }}
通过BaseRecyclerViewAdapterHelper实现是不是代码减少了许多 不用在继承baseadapter了 简单粗暴 加快效率 希望大家可以笑纳
注意:只看DBActivity2类 删除和查询按钮是为了做数据库操作的 – 可以忽略
demo下载
0 0
- xutils 网络请求框架结合BaseRecyclerViewAdapterHelper万能adapter
- Xutils框架之网络请求
- Android Http请求框架二:xUtils 框架网络请求
- Android Http请求框架二:xUtils 框架网络请求
- xUtils框架t网络加载图片 结合SwipeRefreshLayou下拉刷新
- Android网络框架xUtils的Http网络数据请求操作
- 开源框架BaseRecyclerViewAdapterHelper使用——RecyclerView万能适配器
- xUtils之网络请求
- Xutils请求网络
- Xutils中网络请求
- Xutils中网络请求
- Xutils请求网络数据
- xutils网络请求
- Xutils网络请求
- Android常用网络请求框架xUtils、OkHttp、Volley、Retorfit对比
- 使用xUtils网络开源框架请求数据
- BaseRecyclerViewAdapterHelper源码解读(一) 封装简单的adapter和万能的BaseViewHolder
- 网络访问框架XUtils
- c++ primer plus 之for循环
- Unity 3D
- BZOJ4653: [Noi2016]区间
- 在Windows2008 Server服务器上开启Ping或者禁PING
- cuda由7.0升级到8.0
- xutils 网络请求框架结合BaseRecyclerViewAdapterHelper万能adapter
- alsa 无噪音播放pcm
- dinic 模板
- 正则表达式
- 【IMWeb训练营作业】之select组件
- 模板实现顺序表
- 二叉树 常见操作
- 两个重要极限
- 联想网络同传浅析