1:在布局中添加SwipeRefreshLayout和Listview组件


[html]  ​​view plain​​  ​​copy​​


​​

  1. <?xml version="1.0" encoding="utf-8"?>  
  2. <RelativeLayout  
  3. style="@style/BaseStyle.White"  
  4. xmlns:android="http://schemas.android.com/apk/res/android">  
  5.   
  6. <!--下拉刷新-->  
  7. <android.support.v4.widget.SwipeRefreshLayout  
  8. android:id="@+id/srl_refresh"  
  9. style="@style/BaseStyle">  
  10.   
  11. <!--上拉更多-->  
  12. <ListView  
  13. android:id="@+id/lv_person_goods"  
  14. style="@style/BaseStyle"  
  15. android:gravity="center"  
  16. android:horizontalSpacing="@dimen/margin_standard"  
  17. android:numColumns="2"  
  18. android:scrollbarStyle="outsideOverlay"  
  19. android:verticalSpacing="@dimen/margin_standard"/>  
  20. </android.support.v4.widget.SwipeRefreshLayout>  
  21.   
  22. <!--数据为空时显示的View-->  
  23. <TextView  
  24. android:id="@+id/tv_no_data"  
  25. style="@style/BaseStyle.FullWrap"  
  26. android:layout_marginTop="@dimen/textview_width_small"  
  27. android:gravity="center_horizontal"  
  28. android:text="暂无数据"  
  29. android:textColor="@color/text_title_standard"  
  30. android:textSize="@dimen/font_size_small"  
  31. android:visibility="gone"/>  
  32.   
  33. </RelativeLayout>  






2:在主页面使用



[java]  ​​view plain​​  ​​copy​​


​​


  1. /**
  2.  * Created by pengkv on 2014/12/5.
  3.  * 我的宝贝列表页面,用于选择添加到拍卖场
  4.  */  
  5. public class MySaleGoodsListViewActivity extends VolleyActivity implements IInit, IResponseHandler, IPagination, SwipeRefreshLayout.OnRefreshListener {  
  6.   
  7. private int auctionID;  
  8. private GoodsInfoViewModel mViewModel;  
  9. private TextView mEmptyTV;//空白视图  
  10. private ListView mListView;//专场列表  
  11. private PersonGoodsListAdapter mAdapter;//适配器  
  12. private SwipeRefreshLayout mSwipeRefreshLayout;//下拉刷新布局  
  13.   
  14. @Override  
  15. protected void onCreate(Bundle savedInstanceState) {  
  16. super.onCreate(savedInstanceState);  
  17.         setContentView(R.layout.activity_me_auction_goods_list);  
  18.   
  19.         init();  
  20.     }  
  21.   
  22. @Override  
  23. public void init() {  
  24. this, "我店铺的宝贝");  
  25.   
  26. 0);  
  27.   
  28.         mListView = (ListView) findViewById(R.id.lv_person_goods);  
  29.         mEmptyTV = (TextView) findViewById(R.id.tv_no_data);  
  30.   
  31. //下拉刷新组件  
  32. this);//设置刷新监听器  
  33. //设置下拉刷新组件的颜色  
  34.   
  35. new GoodsInfoViewModel();  
  36. //得到喜欢列表数据  
  37.     }  
  38.   
  39. @Override  
  40. public void fetchData(int tag) {  
  41. new GetGoodsListForSellParam(Data.getUserID(), 1, mViewModel.getPageIndex(), Data.PAGE_SIZE_MEDIUM);  
  42. this, param, tag);  
  43.     }  
  44.   
  45. /**
  46.      * 更新适配器
  47.      */  
  48. @Override  
  49. protected void onRestart() {  
  50. super.onRestart();  
  51.         mViewModel.reset();  
  52. //得到喜欢列表数据  
  53.     }  
  54.   
  55. @Override  
  56. public void updateUI(Object response, final int tag) {  
  57. if (response == null) return;  
  58.   
  59. if (tag == FIRST) {  
  60. //得到喜欢列表数据  
  61.             mViewModel.inflate(response);  
  62.   
  63. //通过判断喜欢列表适配器mAdapter是否为空来做分页处理  
  64. if (mAdapter == null) {  
  65. //当适配器为空  
  66. false);//下拉刷新组件停止刷新  
  67.   
  68. new PersonGoodsListAdapter(this, mViewModel.getList());  
  69. //ListView绑定喜欢适配器  
  70.   
  71. /**
  72.                  *  上拉更多
  73.                  */  
  74. new AbsListView.OnScrollListener() {  
  75. @Override  
  76. public void onScrollStateChanged(AbsListView view, int scrollState) {  
  77. switch (scrollState) {  
  78. case SCROLL_STATE_IDLE:  
  79.   
  80. if (mListView.getLastVisiblePosition() == mViewModel.getList().size() - 1) {  
  81. if (!mViewModel.isComplete()) {  
  82.                                         fetchNewData(FIRST);  
  83.                                     }  
  84.                                 }  
  85. break;  
  86.                         }  
  87.                     }  
  88.   
  89. @Override  
  90. public void onScroll(AbsListView view, int firstVisibleItem, int visibleItemCount, int totalItemCount) {  
  91.                     }  
  92.                 });  
  93.   
  94. //将此图片绑定到喜欢列表ListView  
  95.   
  96. else {  
  97. //适配器更新数据  
  98.             }  
  99.   
  100. new AdapterView.OnItemClickListener() {  
  101. @Override  
  102. public void onItemClick(AdapterView<?> parent, View view, int position, long id) {  
  103. new Intent();  
  104. if (getIntent().getBooleanExtra(EnumIntentKey.IS_SELECT_LINK.toString(), false)) { // 选择发送链接  
  105.                         i.putExtra(EnumIntentKey.GOODS_ID.toString(), mViewModel.getList().get(position).getGoodsID());  
  106.                         i.putExtra(EnumIntentKey.GOODS_NAME.toString(), mViewModel.getList().get(position).getGoodsName());  
  107.                         setResult(RESULT_OK, i);  
  108. else {  // 添加到专场  
  109. this, AddAuctionGoodsActivity.class);  
  110.                         i.putExtra(EnumIntentKey.AUCTION_GOODS_ID.toString(), mViewModel.getList().get(position).getGoodsID());  
  111. true);  
  112.                         i.putExtra(EnumIntentKey.AUCTION_ID.toString(), auctionID);  
  113.                         startActivity(i);  
  114.                     }  
  115.                     finish();  
  116.                 }  
  117.             });  
  118.         }  
  119.     }  
  120.   
  121. @Override  
  122. public void fetchNewData(int tag) {  
  123.         mViewModel.increasePageIndex();  
  124. //得到喜欢的拍品列表数据  
  125.     }  
  126.   
  127. @Override  
  128. public void onRefresh() {  
  129. //重置页索引和完成状态  
  130. null;//清空适配器  
  131. //得到喜欢的拍品列表数据  
  132.     }  
  133. }  



解析:

(下拉刷新)主页面需要实现SwipeRefreshLayout.OnRefreshListener接口,然后在


[java]  ​​view plain​​  ​​copy​​


​​

  1. @Override  
  2. public void onRefresh() {  
  3.    }  


方法中实现更新


(上拉更多)上拉更多需要监听setOnScrollListener()方法



[java]  ​​view plain​​  ​​copy​​


​​

  1. mListView.setOnScrollListener(new AbsListView.OnScrollListener() {  
  2. @Override  
  3. public void onScrollStateChanged(AbsListView view, int scrollState) {  
  4. switch (scrollState) {  
  5. case SCROLL_STATE_IDLE:  
  6.   
  7. if (mListView.getLastVisiblePosition() == mViewModel.getList().size() - 1) {  
  8. if (!mViewModel.isComplete()) {  
  9.                                       fetchNewData(FIRST);  
  10.                                   }  
  11.                               }  
  12. break;  
  13.                       }  
  14.                   }  
  15.   
  16. @Override  
  17. public void onScroll(AbsListView view, int firstVisibleItem, int visibleItemCount, int totalItemCount) {  
  18.                   }  
  19.               });