PullToRefresh
来源:互联网 发布:js导致硬件死机 编辑:程序博客网 时间:2024/06/11 17:14
页面刷新的实现思路,思考有没有更简洁的实现方式?
PullToRefresh概念:
开发者可以使用 PullToRefresh 对各种控件实现下拉刷新或者上拉加载以及可以自定义刷新和加载部分的视图。PullToRefresh应用场景:
目前支持:ScrollView,ListView,WebView,RecyclerView 如图所示:
添加 Gradle 依赖
目前只支持 Android Studio,最新版本可到GitHub上查看
compile 'com.jwenfeng.pulltorefresh:library:1.0.3'
在Moudle中添加PullToRefresh的library,最新版本可到GitHub上查看网址如下:https://github.com/chrisbanes/Android-PullToRefresh下载后解压并添加到工作空间中
添加pulltorefresh的布局<?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"> <com.handmark.pulltorefresh.library.PullToRefreshListView android:id="@+id/pull" android:layout_width="fill_parent" android:layout_height="fill_parent" android:cacheColorHint="#00000000" android:divider="#19000000" android:dividerHeight="4dp" android:fadingEdge="none" android:fastScrollEnabled="false" android:footerDividersEnabled="false" android:headerDividersEnabled="false" android:smoothScrollbar="true" /></LinearLayout>
//gridviewd的布局<com.handmark.pulltorefresh.library.PullToRefreshGridView android:id="@+id/pull_refresh_grid" android:layout_width="fill_parent" android:layout_height="fill_parent" android:columnWidth="100dp" android:gravity="fill" android:horizontalSpacing="1dp" android:numColumns="2" android:stretchMode="columnWidth" android:verticalSpacing="1dp" />
-------------------------------------------------------java代码://private ImageLoader imginstance;private List<Data.DataBean> list = new ArrayList<>();private PullToRefreshListView pull;private MyAdapter myAdapter;private String urlstr = "http://www.93.gov.cn/93app/data.do?channelId=0&startNum=";private int i = 0;@Nullable @Override public View onCreateView(LayoutInflater inflater, @Nullable ViewGroup container, @Nullable Bundle savedInstanceState) { View view = inflater.inflate(R.layout.childfragment, container, false); pull = view.findViewById(R.id.pull); imginstance = ImageLoader.getInstance();//图片框架 ListView refreshableView = pull.getRefreshableView(); refreshableView.addHeaderView(view);//添加自定义头布局 pull.setMode(PullToRefreshBase.Mode.BOTH);//允许上下拉 //添加滑动监听事件 pull.setOnRefreshListener(new PullToRefreshBase.OnRefreshListener2<ListView>() { @Override//下拉刷新 public void onPullDownToRefresh(PullToRefreshBase<ListView> refreshView) { list.clear();//清空数据 getNetData(0);//重新请求 } @Override//上拉加载 public void onPullUpToRefresh(PullToRefreshBase<ListView> refreshView) { //加载更多 getNetData(i++); } }); myAdapter = new MyAdapter(); pull.setAdapter(myAdapter);//添加适配器 return view; }//请求数据private void getNetData(int num) { new GetDataAsynctask().execute(urlstr + num); }//请求数据的asynctaskprivate class GetDataAsynctask extends AsyncTask<String, Void, String> { //此方法在子线程中运行,主要执行联网操作 //String 可变参数 @Override protected String doInBackground(String... strings) { String urltemp = strings[0]; //使用utils解析json String getmsg = Utils.getmsg(urltemp); //把转换的json串返回给前台方法 return getmsg; } /** * 此方法在主线程中直接更新ui * String s 是doinbackground方法转换的json */ @Override protected void onPostExecute(String s) { super.onPostExecute(s); //实例化gson对象 Gson gson = new Gson(); //解析json数据 Data data = gson.fromJson(s, Data.class); //封装进集合 List<Data.DataBean> data1 = data.getData(); //添加进 另一个集合 list.addAll(data1); //刷新适配器 myAdapter.notifyDataSetChanged(); //更新UI pull.onRefreshComplete(); } }
//适配器private class MyAdapter extends BaseAdapter { @Override public int getCount() { return list.size(); } @Override public Object getItem(int position) { return null; } @Override public long getItemId(int position) { return 0; } @Override public View getView(int position, View convertView, ViewGroup parent) { if (convertView == null) { convertView = View.inflate(getActivity(), R.layout.pulllistview, null); } ImageView img1 = convertView.findViewById(R.id.img1); TextView title1 = convertView.findViewById(R.id.title1); imginstance.displayImage(list.get(position).getIMAGEURL(), img1); title1.setText(list.get(position).getTITLE()); return convertView; } }
阅读全文
0 0
- pulltorefresh
- PullToRefresh
- PullToRefresh
- PullToRefresh
- PullToRefresh
- PullToRefresh
- pullToRefresh
- PullToRefresh
- PullToRefresh
- pullToRefresh
- pulltorefresh
- Pulltorefresh
- PullToRefresh
- Pulltorefresh
- PullToRefresh
- pullToRefresh
- pulltorefresh
- PullToRefresh
- 【笔记】在主函数内声明int a[1000000],运行出错
- 公共钥匙盒 Java算法
- SpringMVC与Struts2区别与比较总结
- python 语法小记
- 关于'//<![cdata['和 '//]]>'解答
- PullToRefresh
- android edittext 边框 阴影 实现
- FPGA中IBUFDS、IBUFGDS、OBUFDS的运用
- linux内核启动过程分析
- 自定义vue全局组件use的使用
- Window 安装两个版本JDK,配置其中一个
- 控制服务器处理请求的数量(高并发)-防止用户重复点击导致多次请求
- android 使用Robotium自动化测试
- MySQL查询:查询一个表中类别字段中Max()最大值对应的记录