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;        }    }
原创粉丝点击