一、导library
二、配权限
三、代码
package com.mynews.fragment;
import java.text.SimpleDateFormat;
import java.util.Date;
import java.util.List;
import android.content.Intent;
import android.os.Bundle;
import android.os.Handler;
import android.support.annotation.Nullable;
import android.support.v4.app.Fragment;
import android.view.LayoutInflater;
import android.view.View;
import android.view.ViewGroup;
import android.widget.AdapterView;
import android.widget.AdapterView.OnItemClickListener;
import com.google.gson.Gson;
import com.lidroid.xutils.HttpUtils;
import com.lidroid.xutils.exception.HttpException;
import com.lidroid.xutils.http.ResponseInfo;
import com.lidroid.xutils.http.callback.RequestCallBack;
import com.lidroid.xutils.http.client.HttpRequest.HttpMethod;
import com.mynews.InfoActivity;
import com.mynews.R;
import com.mynews.adapter.MyDataAdapter;
import com.mynews.bean.Datas;
import com.mynews.bean.MyData;
import com.mynews.xlistview.XListView;
import com.mynews.xlistview.XListView.IXListViewListener;
public class MyFragments extends Fragment implements IXListViewListener{
String url;//每个分类网址
XListView xlistview;
int pageIndex=10;
private List list;
private Handler handler=new Handler(){};
private String str;
private MyDataAdapter adapter;
public MyFragments(String url) {
this.url=url;
}
@Override
public View onCreateView(LayoutInflater inflater,
@Nullable ViewGroup container, @Nullable Bundle savedInstanceState) {
View view=inflater.inflate(R.layout.fragment_hs, null);
xlistview=(XListView) view.findViewById(R.id.xlistview);
xlistview.setPullLoadEnable(true);
xlistview.setPullRefreshEnable(true);
xlistview.setXListViewListener(this);//实现IXListViewListener接口
getdata();
xlistview.setOnItemClickListener(new OnItemClickListener() {
@Override
public void onItemClick(AdapterView<?> parent, View view,
int position, long id) {
Intent it=new Intent(getActivity(),InfoActivity.class);
it.putExtra("list",list.get(position-1).url);//XListView因为添加了Header,会导致存储的数据+1,所以赋值时需要position-1。补充:当去掉HeaderView时,position不用-1。
//提个建议:上拉加载更多,最好在onCreate()中就执行setAdapter,然后不论是空数据、还是有数据,只用更新适配器就行了。
startActivity(it);
}
});
return view;
}
private void getdata() {
HttpUtils httpUtils=new HttpUtils();
httpUtils.configResponseTextCharset("utf-8");
httpUtils.send(HttpMethod.POST, url+pageIndex, new RequestCallBack<String>(){
@Override
public void onFailure(HttpException arg0, String arg1){
}
@Override
public void onSuccess(ResponseInfo<String> arg0){
str = arg0.result;
Gson gson=new Gson();
MyData mydata=gson.fromJson(str, MyData.class);
list = mydata.data;
adapter = new MyDataAdapter(getActivity(), list);
xlistview.setAdapter(adapter);
}
});
}
//上拉帅新
@Override
public void onRefresh() {
handler.postDelayed(new Runnable() {
@Override
public void run() {
//请求书数据
getdata();
//更新界面显示
onLoad();
}
}, 2000);
}
//加载完数据后,复位header view和footer view,并设置更新的时间。
protected void onLoad() {
handler.postDelayed(new Runnable() {
@Override
public void run() {
xlistview.stopRefresh();
xlistview.stopLoadMore();
SimpleDateFormat df = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
//
String nowTime = df.format(new Date(System.currentTimeMillis()));
//
xlistview.setRefreshTime(nowTime);
}
}, 2000);
}
//加载更多
@Override
public void onLoadMore() {
new Thread(){
@Override
public void run() {
super.run();
try {
getdataflush();
getActivity().runOnUiThread(new Runnable() {
@Override
public void run() {
adapter.notifyDataSetChanged();
}
});
} catch (Exception e) {
// TODO: handle exception
}
}
}.start();
onLoad();
}
protected void getdataflush() {
pageIndex=pageIndex+1;
Gson gson=new Gson();
MyData myData = gson.fromJson(str, MyData.class);
List<Datas> data = myData.data;
list.addAll(data);
}
四、补充HttpUtils的Bean
package com.bwie.vo;
import java.io.Serializable;
import java.util.List;
import com.thoughtworks.xstream.annotations.XStreamAlias;
import com.thoughtworks.xstream.annotations.XStreamImplicit;
@XStreamAlias(“oschina”)
public class Bean implements Serializable{
public String tweetCount;
public String pagesize;
@XStreamAlias(“tweets”)
public Tweets tweets;
public static class Tweets implements Serializable{
@XStreamImplicit(itemFieldName=”tweet”)
public List tweet;
public static class Tweet implements Serializable{
public String id;
public String portrait;
public String author;
public String authorid;
public String body;
public String attach;
public String appclient;
public String commentCount;
public String pubDate;
public String imgSmall;
public String imgBig;
public String likeCount;
public String isLike;
public String likeList;
}
}
}