本文共 3946 字,大约阅读时间需要 13 分钟。
实现下拉刷新, 上拉加载的功能
步骤1:导入第三方moudle:library
首先,点击new按钮 -> import Module如果没有导入成功,在settings.gradle文件夹下面添加
步骤2:新建moudle绑定上面导入的moudle
自此,library已经导入成功,可以新建一个pullToRefrenshListView验证一下。
步骤3:xml布局步骤4:Java代码
public class MainActivity extends AppCompatActivity { private String path ="http://www.qubaobei.com/ios/cf/dish_list.php?stage_id=1&limit=20&page="; private int page = 1; private PullToRefreshListView mPrv;//控件 private Listdata = new ArrayList<>();//数据源 private MyAdapter adapter;//适配器 @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); mPrv = (PullToRefreshListView) findViewById(R.id.prv_id); adapter = new MyAdapter(this,data); mPrv.setAdapter(adapter); //TODO 开启线程, 加载网络数据 new MyTask().execute(); //TODO 1, 为PullToRefreshListView 设置模式 //PullToRefreshBase.Mode.BOTH 上拉加载, 下拉刷新 //PullToRefreshBase.Mode.PULL_FROM_END 上拉加载 //PullToRefreshBase.Mode.PULL_FROM_START 下拉刷新 mPrv.setMode(PullToRefreshBase.Mode.BOTH); //TODO 2, 为PullToRefreshListView 设置监听器 mPrv.setOnRefreshListener(new PullToRefreshBase.OnRefreshListener2 () { @Override public void onPullDownToRefresh(PullToRefreshBase refreshView) { //TODO 下拉刷新 --- 重新加载第一页数据 page = 1; //清空数据源 data.clear(); //开启异步任务, 加载第一页数据 new MyTask().execute(); } @Override public void onPullUpToRefresh(PullToRefreshBase refreshView) { //TODO 上拉加载 page++;//加载下一页 //开启异步任务, 加载下一页数据 new MyTask().execute(); } }); } //TODO 自定义一个线程 class MyTask extends AsyncTask { @Override protected String doInBackground(String... strings) { return HttpUtils.getStringResult(path+page); } @Override protected void onPostExecute(String s) { super.onPostExecute(s); //TODO 3, 设置PullToRefreshListView 加载完成 mPrv.onRefreshComplete(); //解析数据 Qubaobei qubaobei = new Gson().fromJson(s,Qubaobei.class); if(qubaobei!=null && qubaobei.getData()!=null && qubaobei.getData().size()>0) { data.addAll(qubaobei.getData());//将获取的数据, 添加到数据源中 //TODO 刷新适配器 adapter.notifyDataSetChanged(); } } }}
步骤4:HttpUtils工具类代码
public class HttpUtils { /** * 根据地址, 获取网络数据 * @param path 路径 * @return String 数据 */ public static String getStringResult(String path) { HttpURLConnection connection = null; try { URL url = new URL(path); connection = (HttpURLConnection) url.openConnection(); connection.setRequestMethod("GET"); connection.connect(); if(connection.getResponseCode() == 200) { InputStream is = connection.getInputStream(); byte[] buffer = new byte[1024]; int len = 0; StringBuilder sBuilder = new StringBuilder(); while ((len = is.read(buffer))!=-1) { sBuilder.append(new String(buffer,0,len)); } return sBuilder.toString(); } }catch (Exception e) { e.printStackTrace(); } finally { if(connection!=null) { connection.disconnect(); } } return null; }}
library第三方moudle下载地址:
源码下载地址:转载地址:http://jwktn.baihongyu.com/