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); ...
随机推荐
- C++拾遗(四)指针相关
指针声明与初始化 在将指针初始化为一个确定的地址后,才能安全的对指针使用 *操作. 将整数赋值给指针时要使用强制转换(typeName *). 分配内存 C中用malloc(); C++更提倡使用ne ...
- ubuntu自动挂载windows分区和开机自动启动wallproxy
1. 自动挂载windows分区 ubuntu默认是要点一下相应的盘符才会挂载windows分区的. 今天发现了ubuntu下最简单的自动挂载windows分区的办法.... :) 参考如下方法:ht ...
- nginx location详解(三)
location官方文档:http://nginx.org/en/docs/http/ngx_http_core_module.html#location Syntax: location [ = | ...
- HTML5 Canvas 中的颜色、样式和阴影的属性和方法
颜色.样式和阴影的属性与方法 fillStyle 设置或返回用于填充绘画的颜色.渐变或模式 strokeStyle 设置或返回用于笔触的颜色.渐变或模式 ...
- C# 缩略图算法
代码写多了,有些使用过的方法和技巧会一时半会想不起来,平日记录下来,方便自己和有需要的人日后查阅. using (var stream = new FileStream(physicalPath, F ...
- treeview递归
1.数据库 table A( ID int pk, Value varchar, Fid int ) A: ID Value Fid 1 value1 0 2 value2 ...
- js插件zClip实现复制到剪贴板功能
相信这个功能大家平时上网经常能碰到,以前也没怎么留意怎么实现的,直到项目中需要. 网上一搜一大堆,单纯使用js方法也不是没有,但是由于各浏览器的安全机制不同,不是跨浏览器的.去看了几个常用的网站,都是 ...
- python实现中文图片文字识别--OCR about chinese text--tesseract
0.我的环境: win7 32bits python 3.5 pycharm 5.0 1.相关库 安装pillow: pip install pillow 安装tesseract: tesseract ...
- R for installing package 'omg'
The time i have tried to install the package named 'PODBC' and it worked. But now i meet a problem ...
- i++ 与 ++i 的从字节码层面看二者的区别
/** * javap命令可以对class反汇编得到其字节码文件(此命令并不是jdk8开始的,只不过jdk8中对工具进行加强,增加了一些参数,可通过 javap -help了解) * * 注意: * ...