下拉刷新组件 PullToRefreshListView的使用

1.导入库

  下载 Android-PullToRefresh-master.zip 包

   解压后将里面的library 作为android 项目导入

   然后把library 作为工程的依赖

  

  

2.布局文件 

        <com.handmark.pulltorefresh.library.PullToRefreshListView

                        android:id="@+id/check_project_list"

                     android:layout_width="fill_parent"

                  android:layout_height="fill_parent"

                       android:cacheColorHint="#000000"

                  android:fadingEdge="none"

                           android:fastScrollEnabled="false"

                           android:footerDividersEnabled="false"

                           android:headerDividersEnabled="false"

                           android:smoothScrollbar="true"

                           ptr:ptrAnimationStyle="flip"

                           ptr:ptrHeaderTextAppearance ="@android:attr/textAppearanceMedium">    

        </com.handmark.pulltorefresh.library.PullToRefreshListView>

 

3.初始化设置信息

               projectListView = (PullToRefreshListView)findViewById(R.id. check_project_list);

               projectListView.setMode(Mode.BOTH); 

              

               ILoadingLayout startLabels = projectListView   

                       .getLoadingLayoutProxy( true, false );   

             startLabels.setPullLabel( "下拉刷新..." );// 刚下拉时,显示的提示   

             startLabels.setRefreshingLabel( "正在载入..." );// 刷新时   

             startLabels.setReleaseLabel( "放开刷新..." );// 下来达到一定距离时,显示的提示   

          

              ILoadingLayout endLabels = projectListView.getLoadingLayoutProxy(   

                       false, true );   

               endLabels.setPullLabel( "上拉加载..." );// 刚下拉时,显示的提示   

               endLabels.setRefreshingLabel( "正在载入..." );// 刷新时   

               endLabels.setReleaseLabel( "放开加载..." );// 下来达到一定距离时,显示的

 

4.监听下拉刷新与上拉加载

                 projectListView.setOnRefreshListener(new OnRefreshListener2<ListView>(){

 

                      @Override

                      public void onPullDownToRefresh(

                                  PullToRefreshBase<ListView> refreshView) {

                           

                            projectList.clear();

                            pageNo = 1;

                            new FinishRefresh().execute(); 

                queryProjects( pageNo, 10);

                           

                     }

 

                      @Override

                      public void onPullUpToRefresh(

                                  PullToRefreshBase<ListView> refreshView) {

                            // TODO Auto-generated method stub

                            pageNo = pageNo + 1;

                            new FinishRefresh().execute(); 

                queryProjects( pageNo, 10);

                     } 

        

 

              

        });

 

 

 

 

        private class FinishRefresh extends AsyncTask<Void, Void, Void>{   

        @Override   

        protected Void doInBackground(Void... params) {   

             try {   

                 Thread. sleep(1000);   

             } catch (InterruptedException e) {   

             }   

            return null ;   

        }

       

        @Override   

        protected void onPostExecute(Void result){   

//          adapter.notifyDataSetChanged(); 

               projectListView.onRefreshComplete();   

        }

       }   

 

注意:查询完成后需要用 checkProjectAdapter .notifyDataSetChanged();    更新数据,而不是每次都重新设置一下数据模型

checkProjectAdapter = new CheckProjectAdapter( this, R.layout.project_item, projectList );

projectListView .setAdapter(checkProjectAdapter);

这段代码应该在初始化时设置一次就够了,如果每次都调用setAdapter,会出现加载后滚动条会定位到顶部列表的问题

 

 

----
spring mvc+tomcat源码分析视频(链接复制在浏览器打开)

https://study.163.com/course/courseMain.htm?share=2&shareId=480000001919582&courseId=1209399899&_trace_c_p_k2_=6d81bc445e9c462ab8d6345e40f6b0bf

发布了89 篇原创文章 · 获赞 5 · 访问量 8万+
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章