package fragment;
import java.io.IOException;
import java.util.List;
import org.apache.http.HttpEntity;
import org.apache.http.HttpResponse;
import org.apache.http.client.ClientProtocolException;
import org.apache.http.client.HttpClient;
import org.apache.http.client.methods.HttpGet;
import org.apache.http.impl.client.DefaultHttpClient;
import org.apache.http.params.BasicHttpParams;
import org.apache.http.params.HttpConnectionParams;
import org.apache.http.params.HttpParams;
import org.apache.http.util.EntityUtils;
import vo.Super;
import android.content.Intent;
import android.os.Bundle;
import android.os.Handler;
import android.support.v4.app.Fragment;
import android.view.KeyEvent;
import android.view.LayoutInflater;
import android.view.View;
import android.view.ViewGroup;
import android.widget.AdapterView;
import android.widget.AdapterView.OnItemClickListener;
import android.widget.ListView;
import com.ce.adapter.List_Adapter;
import com.ce.jinritoutiao.Info;
import com.ce.jinritoutiao.R;
import com.ce.xlistview.XListView;
import com.ce.xlistview.XListView.IXListViewListener;
import com.exmple.vo.MyData;
import com.google.gson.Gson;
public class F1 extends Fragment implements IXListViewListener {
String st2;
public F1(String st2) {
super();
this.st2 = st2;
}
public F1() {
super();
}
private List<MyData> ll;
private XListView xlistview;
private List<MyData> list;
private Handler handler2;
private List_Adapter adapter;
Handler handler = new Handler() {
public void handleMessage(android.os.Message msg) {
int i = msg.what;
if (i == 1) {// 刷新
ll = (List<MyData>) msg.obj;
adapter = new List_Adapter(getActivity(), ll);
xlistview.setAdapter(adapter);
} else if (i == 2) {
// 加载
// adapter = new List_Adapter(getActivity(), list);
List<MyData> l = (List<MyData>) msg.obj;
ll.addAll(l);
} else {
adapter = new List_Adapter(getActivity(), list);
xlistview.setAdapter(adapter);
ll = list;
}
adapter.notifyDataSetChanged();
};
};
@Override
public View onCreateView(LayoutInflater inflater, ViewGroup container,
Bundle savedInstanceState) {
View view = View.inflate(getActivity(), R.layout.f1, null);
xlistview = (XListView) view.findViewById(R.id.xlistview);
xlistview.setPullLoadEnable(true);// 设置让它上拉,FALSE为不让上拉,便不加载更多数据
xlistview.setPullRefreshEnable(true);
xlistview.setXListViewListener(this);// 监听
handler2 = new Handler();
getData("0");
// 给listview设置点击事件
xlistview.setOnItemClickListener(new OnItemClickListener() {
public void onItemClick(AdapterView<?> parent, View view,
int position, long id) {
// 跳转到详情界面
Intent intent = new Intent(getActivity(), Info.class);
// 将详情的url传过去
intent.putExtra("url", list.get(position).getDisplay_url());
startActivity(intent);
}
});
return view;
}
// 开启线程请求数据
public List<MyData> getData(final String s) {
new Thread() {
private String str;
public void run() {
str = getJsonFromWeb(st2);
Gson gs = new Gson();
Super su = gs.fromJson(str, Super.class);
if (su != null) {
list = su.getData();
}
if (s.equals("刷新")) {
handler.sendMessage(handler.obtainMessage(1, list));
}
if (s.equals("加载")) {
handler.sendMessage(handler.obtainMessage(2, list));
} else {
handler.sendMessage(handler.obtainMessage(3, list));
}
};
}.start();
return list;
}
// 解析数据
public static String getJsonFromWeb(String ur) {
String result = "";
StringBuffer str = new StringBuffer(ur);
HttpGet get = new HttpGet(str.toString());
HttpParams parms = new BasicHttpParams();
HttpConnectionParams.setConnectionTimeout(parms, 200000);
HttpConnectionParams.setSoTimeout(parms, 200000);
HttpClient client = new DefaultHttpClient(parms);
try {
HttpResponse execute = client.execute(get);
if (execute.getStatusLine().getStatusCode() == 200) {
HttpEntity entity = execute.getEntity();
result = EntityUtils.toString(entity, "utf-8");
}
} catch (ClientProtocolException e) {
// TODO Auto-generated catch block
e.printStackTrace();
} catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
return result;
}
public void onLoad() {
xlistview.stopRefresh();
xlistview.stopLoadMore();
xlistview.setRefreshTime("刚刚");
}
// 刷新
public void onRefresh() {
handler2.postDelayed(new Runnable() {
public void run() {
getData("刷新");
xlistview.setAdapter(adapter);
onLoad();
}
}, 2000);
}
// 加载更多
public void onLoadMore() {
handler2.postDelayed(new Runnable() {
public void run() {
getData("加载");
adapter.notifyDataSetChanged();
onLoad();
}
}, 2000);
}
}