package bw.com.rk_day20.Fragment;
import android.view.View;
import android.widget.ListView;
import android.widget.Toast;
import com.handmark.pulltorefresh.library.PullToRefreshBase;
import com.handmark.pulltorefresh.library.PullToRefreshListView;
import bw.com.rk_day20.Adapter.ApiAdapter;
import bw.com.rk_day20.Adapter.NewAdapter;
import bw.com.rk_day20.Person.ApiPerson;
import bw.com.rk_day20.Person.NewsPerson;
import bw.com.rk_day20.R;
import bw.com.rk_day20.UtilWork.NewsUtilWork;
public class Fragment2 extends BaseFragment {
private PullToRefreshListView plv;
private int page = 1;
private String newsUlr = "http://api.expoon.com/AppNews/getNewsList/type/1/p/";
private ApiAdapter adapter;
// private NewAdapter adapter;
@Override
protected void initData() {
if (NewsUtilWork.getInstance().isNotWork(getActivity())){
request();
}else {
Toast.makeText(getActivity(),"cuowu",Toast.LENGTH_SHORT).show();
}
}
@Override
protected void initView(View view) {
plv = view.findViewById(R.id.plv);
plv.onRefreshComplete();
// adapter = new NewAdapter(getActivity());
adapter = new ApiAdapter(getActivity());
plv.setAdapter(adapter);
plv.setOnRefreshListener(new PullToRefreshBase.OnRefreshListener2<ListView>() {
@Override
public void onPullDownToRefresh(PullToRefreshBase<ListView> refreshView) {
page = 1;
initData();
}
@Override
public void onPullUpToRefresh(PullToRefreshBase<ListView> refreshView) {
initData();
}
});
page=1;
initData();
}
private void request() {
NewsUtilWork.getInstance().getReques4(newsUlr + page, ApiPerson.class,
new NewsUtilWork.NewsCallback<ApiPerson>() {
@Override
public void onsccuess(ApiPerson o) {
if(page ==1){
adapter.setList(o.getData());
}else {
adapter.addList(o.getData());
}
plv.onRefreshComplete();
page++;
if (o.getData().size()<0){
plv.setMode(PullToRefreshBase.Mode.PULL_FROM_START);
}else {
plv.setMode(PullToRefreshBase.Mode.BOTH);
}
}
@Override
public void onFil(String msg) {
Toast.makeText(getActivity(),"cuowu",Toast.LENGTH_SHORT).show();
plv.onRefreshComplete();
}
});
}
@Override
protected int requeslt() {
return R.layout.fragment2;
}
}
2工具类
import android.content.Context;
import android.net.ConnectivityManager;
import android.net.NetworkInfo;
import android.os.AsyncTask;
import android.os.Handler;
import com.google.gson.Gson;
import java.io.InputStream;
import java.io.InputStreamReader;
import java.net.HttpURLConnection;
import java.net.URL;
public class NewsUtilWork {
private static NewsUtilWork instance;
private final Handler handler;
private NewsUtilWork() {
handler = new Handler();
}
public static NewsUtilWork getInstance() {
if (instance == null){
synchronized (NewsUtilWork.class){
if (instance == null){
instance = new NewsUtilWork();
}
}
}
return instance;
}
public void getReques4(final String lujin, final Class classBean, final NewsCallback callback){
new Thread(new Runnable() {
@Override
public void run() {
final Object reque2 = getReque2(lujin, classBean);
if (reque2 != null){
handler.post(new Runnable() {
@Override
public void run() {
callback.onsccuess(reque2);
}
});
}else {
handler.post(new Runnable() {
@Override
public void run() {
callback.onFil("请求错误");
}
});
}
}
}).start();
}
/* public void getReques3(String lujin, final Class classBean, final NewsCallback callback){
new AsyncTask<String,Void, Object>() {
@Override
protected Object doInBackground(String... strings) {
return getReque2(strings[0],classBean);
}
@Override
protected void onPostExecute(Object o) {
super.onPostExecute(o);
if (o == null){
callback.onFil("请求失败");
}else {
callback.onsccuess(o);
}
}
}.execute(lujin);
}*/
public interface NewsCallback<T>{
void onsccuess(T o);
void onFil(String msg);
}
public <T> T getReque2(String lujin,Class classBean){
Object obj;
String reque = getReque(lujin);
obj = new Gson().fromJson(reque, classBean);
return (T)obj;
}
public String getReque(String lujin){
String json = "";
try {
URL url = new URL(lujin);
HttpURLConnection urlConnection = (HttpURLConnection) url.openConnection();
urlConnection.setRequestMethod("GET");
urlConnection.setConnectTimeout(5000);
urlConnection.setReadTimeout(5000);
int responseCode = urlConnection.getResponseCode();
if (responseCode == 200){
json = getstream(urlConnection.getInputStream());
}
} catch (Exception e) {
e.printStackTrace();
}
return json;
}
private String getstream(InputStream inputStream) throws Exception {
StringBuilder sb = new StringBuilder();
InputStreamReader inputStreamReader = new InputStreamReader(inputStream);
char[] buffer = new char[1024];
for (int read = inputStreamReader.read(buffer); read != -1; read = inputStreamReader.read(buffer)) {
sb.append(buffer, 0, read);
}
return sb.toString();
}
public boolean isNotWork(Context context){
ConnectivityManager cm = (ConnectivityManager) context.getSystemService(Context.CONNECTIVITY_SERVICE);
NetworkInfo activeNetworkInfo = cm.getActiveNetworkInfo();
return activeNetworkInfo!=null&&activeNetworkInfo.isAvailable();
}
}