PullToRefresh的使用
主界面↓
package com.wangzhen.pulltorefresh; import java.util.ArrayList;
import java.util.List; import com.handmark.pulltorefresh.library.PullToRefreshBase;
import com.handmark.pulltorefresh.library.PullToRefreshBase.OnRefreshListener;
import com.handmark.pulltorefresh.library.PullToRefreshListView;
import com.handmark.pulltorefresh.library.PullToRefreshBase.Mode;
import com.lidroid.xutils.ViewUtils;
import com.lidroid.xutils.view.annotation.ContentView;
import com.lidroid.xutils.view.annotation.ViewInject;
import com.wangzhen.adapter.MessageAdapter;
import com.wangzhen.bean.NewsBean;
import com.wangzhen.listener.HttpDataListener;
import com.wangzhen.tasks.LoadNewsTask; import android.support.v7.app.ActionBarActivity;
import android.text.format.DateUtils;
import android.widget.ListView;
import android.content.Context;
import android.os.Bundle; @ContentView(R.layout.activity_main)
public class MainActivity extends ActionBarActivity { @ViewInject(R.id.ListView_PullToRefresh)
private PullToRefreshListView ListView_PullToRefresh; Context mContext;
MessageAdapter adapter;
private HttpDataListener mDataListener; @Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
ViewUtils.inject(this);
mContext = this; Setup();
InitListener(); List<NewsBean> list = new ArrayList<NewsBean>();
for (int i = 0; i < 5; i++) {
NewsBean bean = new NewsBean();
bean.setNewsImageURL("");
bean.setNewsTitle("标题" + (i + 1));
bean.setNewsContent("内容" + (i + 1));
list.add(bean);
}
adapter = new MessageAdapter(mContext, list);
ListView_PullToRefresh.setAdapter(adapter); ListView_PullToRefresh
.setOnRefreshListener(new OnRefreshListener<ListView>() { @Override
public void onRefresh(
PullToRefreshBase<ListView> refreshView) {
String time = DateUtils.formatDateTime(mContext,
System.currentTimeMillis(),
DateUtils.FORMAT_SHOW_TIME
| DateUtils.FORMAT_SHOW_DATE
| DateUtils.FORMAT_ABBREV_ALL); // 下拉刷新
if (refreshView.isShownHeader()) {
// 设置刷新标签
ListView_PullToRefresh.getLoadingLayoutProxy()
.setRefreshingLabel("正在刷新");
// 设置刷新标签
ListView_PullToRefresh.getLoadingLayoutProxy()
.setPullLabel("下拉刷新");
// 设置刷新标签
ListView_PullToRefresh.getLoadingLayoutProxy()
.setReleaseLabel("释放开始刷新");
// 设置上一次刷新的提示标签
refreshView.getLoadingLayoutProxy()
.setLastUpdatedLabel("最后更新时间:" + time);
}
// 上拉加载
if (refreshView.isShownFooter()) {
// 设置刷新标签
ListView_PullToRefresh.getLoadingLayoutProxy()
.setRefreshingLabel("正在加载");
// 设置刷新标签
ListView_PullToRefresh.getLoadingLayoutProxy()
.setPullLabel("上拉加载更多");
// 设置刷新标签
ListView_PullToRefresh.getLoadingLayoutProxy()
.setReleaseLabel("释放开始加载");
// 设置上一次刷新的提示标签
refreshView.getLoadingLayoutProxy()
.setLastUpdatedLabel("最后加载时间:" + time);
}
new LoadNewsTask(ListView_PullToRefresh, mDataListener)
.execute();
}
});
} /**
* 初始化监听器
*/
private void InitListener() {
mDataListener = new HttpDataListener() { @Override
public void ParseResponse(List<NewsBean> list) {
if (list == null) {
return;
}
adapter.AddData(list);
adapter.notifyDataSetChanged();
}
};
} /**
* 对下拉刷新和上拉加载进行设置
*/
private void Setup() {
/**
* PullToRefresh刷新模式
* Both:上拉刷新和下拉刷新都支持
* DIABLED:禁用上拉下拉刷新
* PULL_FROM_START:仅支持下拉刷新
* PULL_FROM_END:仅支持上拉加载
* MANUAL_REFRESH_ONLY:只允许手动触发
*/
ListView_PullToRefresh.setMode(Mode.BOTH);
}
}
HTTP接口↓
package com.wangzhen.listener; import java.util.List; import com.wangzhen.bean.NewsBean; /**
* HTTP请求接口
* @author Administrator
*
*/
public interface HttpDataListener { /***
* 解析服务器返回结果
*
* @param list
*/
public abstract void ParseResponse(List<NewsBean> list);
}
异步加载类↓
package com.wangzhen.tasks; import java.util.ArrayList;
import java.util.List; import com.handmark.pulltorefresh.library.PullToRefreshListView;
import com.wangzhen.bean.NewsBean;
import com.wangzhen.listener.HttpDataListener; import android.os.AsyncTask; /**
* 异步加载新闻
*
* @author Administrator
*
*/
public class LoadNewsTask extends AsyncTask<String, Void, List<NewsBean>> { PullToRefreshListView mListView;
HttpDataListener mListener; public LoadNewsTask(PullToRefreshListView listView,
HttpDataListener listener) {
mListView = listView;
mListener = listener;
} @Override
protected void onPostExecute(List<NewsBean> result) {
super.onPostExecute(result);
mListView.onRefreshComplete();
mListener.ParseResponse(result);
} @Override
protected List<NewsBean> doInBackground(String... params) {
try {
Thread.sleep(2000);
} catch (InterruptedException e) {
e.printStackTrace();
}
return GenerateData();
} /**
* 生成数据
*
* @return
*/
private List<NewsBean> GenerateData() {
List<NewsBean> list = new ArrayList<NewsBean>();
for (int i = 0; i < 5; i++) {
NewsBean bean = new NewsBean();
bean.setNewsImageURL("");
bean.setNewsTitle("添加标题" + (i + 1));
bean.setNewsContent("添加内容" + (i + 1));
list.add(bean);
}
return list;
} }
消息适配器↓
package com.wangzhen.adapter; import java.util.List; import com.wangzhen.bean.NewsBean;
import com.wangzhen.pulltorefresh.R; import android.content.Context;
import android.view.LayoutInflater;
import android.view.View;
import android.view.ViewGroup;
import android.widget.BaseAdapter;
import android.widget.ImageView;
import android.widget.TextView; /**
* 新闻适配器
*
* @author Administrator
*
*/
public class MessageAdapter extends BaseAdapter { Context mContext;
LayoutInflater mInflater; List<NewsBean> mData = null; public MessageAdapter(Context context, List<NewsBean> list) {
mContext = context;
mInflater = LayoutInflater.from(mContext);
mData = list;
} /**
* 增加数据源
*
* @param data
*/
public void AddData(List<NewsBean> list) {
for (NewsBean bean : list) {
this.mData.add(bean);
}
} @Override
public int getCount() {
// TODO Auto-generated method stub
return mData.size();
} @Override
public NewsBean getItem(int position) {
// TODO Auto-generated method stub
return mData.get(position);
} @Override
public long getItemId(int position) {
// TODO Auto-generated method stub
return position;
} @Override
public View getView(int position, View convertView, ViewGroup parent) {
ViewHolder holder;
if (convertView == null) {
holder = new ViewHolder();
convertView = mInflater.inflate(R.layout.item_layout, null);
holder.mImageView_Icon = (ImageView) convertView
.findViewById(R.id.ImageView_Icon);
holder.mTextView_Title = (TextView) convertView
.findViewById(R.id.TextView_Title);
holder.mTextView_Content = (TextView) convertView
.findViewById(R.id.TextView_Content);
convertView.setTag(holder); } else {
holder = (ViewHolder) convertView.getTag();
} holder.mImageView_Icon.setImageResource(R.drawable.ic_launcher);
holder.mTextView_Title.setText(mData.get(position).getNewsTitle());
holder.mTextView_Content.setText(mData.get(position).getNewsContent()); return convertView;
} class ViewHolder {
ImageView mImageView_Icon;
TextView mTextView_Title;
TextView mTextView_Content;
} }
实体类↓
package com.wangzhen.bean; /**
* 实体类
*
* @author Administrator
*
*/
public class NewsBean { private String NewsImageURL;
private String NewsTitle;
private String NewsContent; public String getNewsImageURL() {
return NewsImageURL;
} public void setNewsImageURL(String newsImageURL) {
NewsImageURL = newsImageURL;
} public String getNewsTitle() {
return NewsTitle;
} public void setNewsTitle(String newsTitle) {
NewsTitle = newsTitle;
} public String getNewsContent() {
return NewsContent;
} public void setNewsContent(String newsContent) {
NewsContent = newsContent;
} }
在PullToRefreshBase文件里要添加以下代码:
// 判别头部是否展示出来,如果展示出来代表下拉使得头部展示。true为下拉
public boolean isShownHeader() {
return getHeaderLayout().isShown();
} // 判别低部是否展示出来,如果展示出来代表上拉使得低部展示。true为上拉
public boolean isShownFooter() {
return getFooterLayout().isShown();
}
PullToRefresh的使用的更多相关文章
- android使用PullToRefresh实现上拉加载和下拉刷新效果
其实很早前就在博客园中也写过官方的下拉刷新控件SwipeRefreshLayout,但是这个控件仅仅支持下拉刷新,用起来还算可以.然而在我们实际开发应用中,很多地方都不止有下拉刷新,而且还有上拉加载的 ...
- 使用PullToRefresh插件实现ListView下拉刷新(Android Studio)
下载PullToRefresh
- 如何使用PullToRefresh
这里有详解 PullToRefresh使用详解(一)--构建下拉刷新的listView PullToRefresh使用详解(二)---重写BaseAdapter实现复杂XML下拉刷新 PullToRe ...
- UWP Composition API - PullToRefresh
背景: 之前用ScrollViewer 来做过 PullToRefresh的控件,在项目一些特殊的条件下总有一些问题,比如ScrollViewer不会及时到达指定位置.于是便有了使用Compositi ...
- .Net 转战 Android 4.4 日常笔记(10)--PullToRefresh下拉刷新使用
下拉刷新很多地方都用到了,新浪微博,微信,百度新闻 这里我们使用一个开源的库叫:PullToRefresh 开源地址:https://github.com/chenyoca/pull-to-refre ...
- PullToRefresh
PullToRefreshListView的使用,实现下拉刷新,上拉加载更多.首先是布局文件: <com.handmark.pulltorefresh.library.PullToRefresh ...
- 【转载】 Android PullToRefresh (ListView GridView 下拉刷新) 使用详解
Android下拉刷新pullToRefreshListViewGridView 转载请标明出处:http://blog.csdn.net/lmj623565791/article/details/3 ...
- Android中pullToRefresh使用
pullToRefresh的导入 首先,点击new按钮 -> import Module 然后在 New Module界面选择已经在本地的含有源代码的pullToRefresh. 打开如下图所示 ...
- ListView上拉加载,下拉刷新 PullToRefresh的使用
PullToRefresh是一套实现非常好的下拉刷新库,它支持:ListViewExpandableListViewGridViewWebViewScrollViewHorizontalScrollV ...
- pulltorefresh滚动到底部
如果用ListView,让它滚动到顶部,一般是这样写的: if (!listView.isStackFromBottom()) { listView.setStackFromBottom(true); ...
随机推荐
- startActivityForResult
Activity提供了startActivityForResult(Intent intent, int requestCode)方法打开新的Activity,新的Activity关闭后会向前面的Ac ...
- oracle双机热备概念
1. 双机热备概述 双机热备有两种实现模式,一种是基于共享的存储设备的方式,另一种是没有共享的存储设备的方式,一般称为纯软件方式. 基于存储共享的双机热备是双机热备的最标准方案. ...
- WCF入门教程[WCF基本应用]
一.概述 Windows Communication Foundation(WCF)是由微软发展的一组数据通信的应用程序开发接口,可以翻译为Windows通讯接口,它是.NET框架的一部分.由 .NE ...
- Django新手图文教程
Django新手图文教程 本文面向:有python基础,刚接触web框架的初学者. 环境:windows7 python3.5.1 pycharm专业版 Django 1.10版 pip3 一 ...
- lua编码转换
lua编码转换, 这个要记录下:http://www.lpfrx.com/archives/4918/ ,总是觉得lua没python甘方便,应该说没这么顺手吧,可能先入为主吧,python库多, 编 ...
- KesionCMS V6.5后台拿SHELL方法
Title:KesionCMS V6.5后台拿SHELL方法 --2011-03-29 00:21 最近弄一个站点,是KesionCMS V6.5的WEB系统,试了下后台拿webshell方法,记下 ...
- PHP常用字符串函数
1:访问子字符串:strpos()2:提取子字符串:substr()3:逐字节处理字符串:strstr()4:计算字符串长度:strlen()5:替换子字符串:substr_replace()6:按字 ...
- CSS定位属性Position详解
CSS中最常用的布局类属性,一个是Float(CSS浮动属性Float详解),另一个就是CSS定位属性Position. 1. position:static 所有元素的默认定位都是:position ...
- ALTIUM 10 过孔设置开窗、不开窗
大家或许会发现我们公司做的PCB板子,所有的过孔都开了窗,也就是说过孔没有绿油,这样会导致焊接中容易连焊.兴许大家为此吃进苦头,我是被整了好几次,查了好久却发现是个低级错误,一个过孔连焊到隔壁焊盘了. ...
- 8051单片机I/O引脚工作原理
一.P0端口的结构及工作原理 P0端口8位中的一位结构图见下图: 由上图可见,P0端口由锁存器.输入缓冲器.切换开关.一个与非门.一个与门及场效应管驱动电路构成.再看图的右边,标号为P0.X引脚的图标 ...