package com.example.day09;
import android.annotation.SuppressLint;
import android.os.AsyncTask;
import android.support.v7.app.AppCompatActivity;
import android.os.Bundle;
import android.view.View;
import com.example.xlistview.src.me.maxwin.view.XListView;
import com.google.gson.Gson;
import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStream;
import java.io.InputStreamReader;
import java.net.HttpURLConnection;
import java.net.MalformedURLException;
import java.net.URL;
import java.net.URLConnection;
import java.util.List;
public class MainActivity extends AppCompatActivity {
private String apiUrl="http://172.17.8.100/movieApi/movie/v1/findHotMovieList?";
private int page;
private final int count=10;
private XListView xlv;
private MoviewBean myAdapter;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
xlv =findViewById(R.id.xlv);
myAdapter = new MoviewBean(this);
xlv.setAdapter(myAdapter);
//设置开启的加载更多
xlv.setPullLoadEnable(true);
xlv.setXListViewListener(new XListView.IXListViewListener() {
@Override
public void onRefresh() {//刷新
page=1;
initData();
}
@Override
public void onLoadMore() {//当加载时 加载下一页
initData();
}
});
page=1;
initData();
}
@SuppressLint("StaticFieldLeak")
private void initData() {
new AsyncTask<String ,Void,List<Movies.ResultBean>>(){
@Override
protected List<Movies.ResultBean> doInBackground(String... strings) {
try {
URL url = new URL(strings[0]);
HttpURLConnection urlConnection = (HttpURLConnection) url.openConnection();
urlConnection.setRequestMethod("GET");
urlConnection.setConnectTimeout(5000);
urlConnection.setReadTimeout(5000);
int responseCode = urlConnection.getResponseCode();
if (responseCode==200){
InputStream inputStream = urlConnection.getInputStream();
String json = stream2String(inputStream);
Gson gson = new Gson();
Movies movies = gson.fromJson(json, Movies.class);
return movies.getResult();
}
} catch (MalformedURLException e) {
e.printStackTrace();
} catch (IOException e) {
e.printStackTrace();
}
return null;
}
@Override
protected void onPostExecute(List<Movies.ResultBean> resultBeans) {
super.onPostExecute(resultBeans);
//加载数据错误
if (resultBeans==null){
xlv.stopLoadMore();
xlv.stopRefresh();
return;
}
//加载的数据添加到尾部,前面数据保留
//刷新 只有最新的数据,原来的数据清除掉
if (page==1){
myAdapter.setList(resultBeans);
}else{//加载
myAdapter.addList(resultBeans);
}
//如果没有下一页了。停止加载更多
xlv.setPullLoadEnable(resultBeans.size()>=10);
//停止刷新加载
xlv.stopLoadMore();
xlv.stopRefresh();
page++;
}
}.execute(apiUrl+"page="+page+"&count="+count);
}
private String stream2String(InputStream inputStream) throws IOException {
StringBuilder stringBuilder = new StringBuilder();
InputStreamReader inputStreamReader = new InputStreamReader(inputStream);
BufferedReader br = new BufferedReader(inputStreamReader);
for (String tmp=br.readLine();tmp!=null;tmp=br.readLine()){
stringBuilder.append(tmp);
}
return stringBuilder.toString();
}
}