《尚硅谷-杨光福-北京新闻day4.docx》由会员分享,可在线阅读,更多相关《尚硅谷-杨光福-北京新闻day4.docx(43页珍藏版)》请在金锄头文库上搜索。
1、新闻客户端讲师:杨光福微博:http:/ Day41_自定义ListView(加载更多)-4201_添加角布局 1_初始化和隐藏代码在RefreshListView构造方法中调用/* * 添加角布局 * param context */private void initFooterView(Context context) View footerView = View.inflate(context, R.layout.refresh_listview_footer, null);/隐藏代码footerView.measure(0, 0);int footerViewHeight = foot
2、erView.getMeasuredHeight();footerView.setPadding(0, -footerViewHeight, 0, 0);this.addFooterView(footerView);2_布局文件refresh_listview_footer.xml 02_拖动到底部的时候显示角1_拖动到底部显示加载更多布局/* * 当滚动状态改变的时候触发此方法 * */Overridepublic void onScrollStateChanged(AbsListView view, int scrollState) /当停止滚动时或者惯性滚动时,ListView的最后一个
3、显示的条目:getCount()-1if(scrollState = SCROLL_STATE_IDLE|scrollState = SCROLL_STATE_FLING)if(getLastVisiblePosition() =(getCount()-1)/滑动到最后一个可以看到的ItemSystem.out.println(滑动到最后一个可以看到的Item);isLoadingMore = true;/把底部加载显示footerView.setPadding(0, 0, 0, 0);setSelection(getCount();/调用if(mOnRefreshListener !=nul
4、l)mOnRefreshListener.onLoadingMore(); Overridepublic void onScroll(AbsListView view, int firstVisibleItem,int visibleItemCount, int totalItemCount) /* * 自定义刷新接口 * */public interface OnRefreshListener/* * 当下拉刷新的时候回调这儿方法 */public void onPullDownRefresh();/* * 当加载更多的时候回调这个方法 */public void onLoadingMore
5、();/* * 当数据请求成功或者失败的时候,状态还原 */public void onRefreshFinish(boolean isSuccess)/判断是否是加载更多if(isLoadingMore)footerView.setPadding(0, -footerViewHeight, 0, 0);isLoadingMore = false;else/隐藏下拉刷新控件refreshHeaderView.setPadding(0, -headerViewHeight, 0, 0);currentState = PULL_DOWN_REFRESH;ivArrow.clearAnimation
6、();mProgressBar.setVisibility(View.INVISIBLE);ivArrow.setVisibility(View.VISIBLE);tvState.setText(下拉刷新);if(isSuccess)/设置更新时间tvTime.setText(最后刷新的时间:+getSystemTime(); 2_联网请求加载更多数据 /* * 菜单页面对应的新闻页签页面 * 总共有12个 * author Administrator * */public class TabMenuDetailPager extends MenuDetailBasePager impleme
7、nts OnPageChangeListener /* * 新闻中心-新闻菜单对应的标签对应的数据 */private NewCenterTag newCenterTag;./* * 加载更多数据的URL */private String moreUrl; /* * 是否加载更多数据中 */protected boolean isLoadingMore = false; . Overridepublic View initView() View view = View.inflate(mActivity, R.layout.tab_detail, null);/把View注入到XUtils框架
8、中ViewUtils.inject(this, view);./设置监听下拉刷新mListView.setOnRefreshListener(new OnRefreshListener() Overridepublic void onPullDownRefresh() isPullDownRefreshing = true;getDataFromNet(); Overridepublic void onLoadingMore() if(TextUtils.isEmpty(moreUrl)Toast.makeText(mActivity, 没有更多数据了, 1).show();mListView
9、.onRefreshFinish(false);else/有更多数据,要加载更多数据了getMoreDataFromNet(););return view;/* * 加载更多数据 */protected void getMoreDataFromNet() HttpUtils httpUtils = new HttpUtils();httpUtils.send(HttpMethod.GET, moreUrl, new RequestCallBack() Overridepublic void onSuccess(ResponseInfo responseInfo) System.out.prin
10、tln(加载更多数据成功:+responseInfo.result);mListView.onRefreshFinish(false);isLoadingMore = true;processData(responseInfo.result); Overridepublic void onFailure(HttpException error, String msg) mListView.onRefreshFinish(false);System.out.println(加载更多数据失败:+ msg);); /* * 处理和解析json数据 * param json */protected void processData(String json) TabDetailBean bean = parserJson(json);if(!isLoadingMore)System.out.println(bean.data.news.get(0).title);topnews = bean.data.topnews;/给ViewPager设置适配器TabDe