android下拉刷新完全解析,教你如何一分钟实现下拉刷新功能,Android通过XListView实现上拉加载下拉刷新功能...

## 导入XListVIew第三方库文件。通过LinkedList将刷新数据插入到集合头部,将加载的数据放入集合尾部 ##

private Context context;

private View view;

private String path;

private XListView xlv;

private LinkedList listData;

private Handler handler = new Handler() {

@SuppressWarnings("unchecked")

public void handleMessage(android.os.Message msg) {

int code = msg.arg1;

if(msg.arg1==400){

Toast.makeText(context, "数据格式解析不正确", 0).show();

}

else{

NewsFragmentAdapter myAdapter = null;

switch (code) {

case 0:

// 默认

listData = (LinkedList) msg.obj;

myAdapter = new NewsFragmentAdapter(context, listData);

xlv.setAdapter(myAdapter);

break;

case 1:

LinkedList shualist = (LinkedList) msg.obj;

myAdapter = new NewsFragmentAdapter(context, shualist);

for (int i = 0; i < shualist.size(); i++) {

listData.addFirst(shualist.get(i));

}

myAdapter.notifyDataSetChanged();

stopLoadOrRefresh();

break;

case 2:

LinkedList loadlist = (LinkedList) msg.obj;

myAdapter = new NewsFragmentAdapter(context, loadlist);

for (int i = 0; i < loadlist.size(); i++) {

listData.addLast(loadlist.get(i));

}

myAdapter.notifyDataSetChanged();

stopLoadOrRefresh();

break;

default:

break;

}

}

};

};

@Override

public void onCreate(Bundle savedInstanceState) {

super.onCreate(savedInstanceState);

context=getActivity();

}

@Override

public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) {

view = inflater.inflate(R.layout.fragment, container, false);

path = getArguments().getString("path");

// 配置Xlist

xlv = (XListView) view.findViewById(R.id.xlv); // 获得控件

xlv.setPullRefreshEnable(true); // 设置可以下拉刷新

xlv.setPullLoadEnable(true); // 设置可以上拉加载

xListViewListener(); // 调用XListView的监听方法

if(path != null){

getMessage(path, 0); // 调用方法请求数据

}

itemClickListner(); // 调用XListView条目点击监听方法

return view;

}

private void itemClickListner() {

xlv.setOnItemClickListener(new OnItemClickListener() {

@Override

public void onItemClick(AdapterView> arg0, View arg1, int arg2, long arg3) {

Intent intent=new Intent(context, WebViewActivity.class);

intent.putExtra("path", listData.get(arg2-1).article_url);

startActivity(intent);

}

});

}

public void xListViewListener() {

xlv.setXListViewListener(new IXListViewListener() {

// 当下拉刷新时实现的操作

@Override

public void onRefresh() {

getMessage(path, 1); // 请求网络,将新请求的内容加载到集合前端

}

// 当上拉加载时实现的操作内容

@Override

public void onLoadMore() { // 请求网络,将请求的新内容加载到集合后端

getMessage(path, 2);

}

});

}

public void getMessage(String path, final int code) {

HttpUtils utils = new HttpUtils();

// 设置刷新间隔时间,如果不设置默认一分钟后才能刷新出新内容

utils.configCurrentHttpCacheExpiry(0);

utils.send(HttpMethod.GET, path, new RequestCallBack() {

// 请求网络失败回调的方法

@Override

public void onFailure(HttpException arg0, String arg1) {

}

// 请求网络成功回调的方法

@Override

public void onSuccess(ResponseInfo arg0) {

String info = arg0.result;

Gson gson = new Gson();

LinkedList list = gson.fromJson(info, ModelBean.class).data;

Message message = new Message();

if(list != null){

message.arg1 = code;

message.obj = list;

}else{

message.arg1=400;

}

handler.sendMessage(message);

}

});

}

private void stopLoadOrRefresh() {

// 停止加载

xlv.stopLoadMore();

// 停止刷新

xlv.stopRefresh();

// 最近一次刷新时间

xlv.setRefreshTime(getTime());

}

public String getTime() {

// 格式化时间

SimpleDateFormat format = new SimpleDateFormat("hh:mm:ss");

Date date = new Date();

String time = format.format(date);

return time;

}

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值