public class MainActivity extends AppCompatActivity {api
// private PullToRefreshListView plv;網絡
private PullToRefreshGridView plv;app
private int pageIndex=1;ide
private int operType=1;//1:刷新 2:加載更多佈局
private List<ResultData.NewslistBean> datas=new ArrayList<>();ui
private MyAdapter adapter;this
private String url="https://api.tianapi.com/wxnew/?key=48a7d7193e11bd2dd4a683b6e2f90a4f&num=10&page="+pageIndex;url
@Overridespa
protected void onCreate(Bundle savedInstanceState) {orm
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
plv = findViewById(R.id.plv);
initPlv();
//請求網絡 獲取數據
requestNetData();
}
private void requestNetData() {
new MyTask().execute(url);
}
class MyTask extends AsyncTask<String,Void,String>{
@Override
protected String doInBackground(String... strings) {
String str="";
try {
URL url=new URL(strings[0]);
HttpURLConnection urlConnection = (HttpURLConnection) url.openConnection();
urlConnection.setReadTimeout(5000);
urlConnection.setConnectTimeout(5000);
urlConnection.setRequestMethod("GET");
if(urlConnection.getResponseCode()==200){
InputStream inputStream = urlConnection.getInputStream();
str=inputstreamToString(inputStream);
}
} catch (MalformedURLException e) {
e.printStackTrace();
} catch (IOException e) {
e.printStackTrace();
}
return str;
}
@Override
protected void onPostExecute(String s) {
super.onPostExecute(s);
//解析,顯示
Gson gson=new Gson();
ResultData resultData=gson.fromJson(s,ResultData.class);
//獲取列表要顯示的數據
List<ResultData.NewslistBean> newslist = resultData.getNewslist();
if(operType==1){
datas.clear();//清空全部數據
}
//將新請求下來的數據添加到datas集合中
datas.addAll(newslist);
setLvAdapter();
//關閉頭尾佈局
plv.onRefreshComplete();
}
}
public void setLvAdapter(){
if(adapter==null){
adapter=new MyAdapter(this,datas);
plv.setAdapter(adapter);
}else {
adapter.notifyDataSetChanged();
}
}
/**
* 初使化pulltoRefreshListview
*/
private void initPlv() {
//1.設置模式 BOTH:支持上拉加載,下拉刷新 PULL_FROM_START:只支持刷新,不支持加載 PULL_FROM_END:只支持加載,不支持刷新
plv.setMode(PullToRefreshBase.Mode.BOTH);
//2.設置頭尾佈局的文字(自定義)
/*這裏經過getLoadingLayoutProxy 方法來指定上拉和下拉時顯示的狀態的區別,第一個true 表明下來狀態 ,第二個true 表明上拉的狀態
若是想區分上拉和下拉狀態的不一樣,能夠分別設置*/
ILoadingLayout startLabels = plv.getLoadingLayoutProxy(true, false);
startLabels.setPullLabel("下拉刷新....");
startLabels.setRefreshingLabel("...正在拉...");
startLabels.setReleaseLabel("..放開刷新...");
//尾部
ILoadingLayout endLabels = plv.getLoadingLayoutProxy(false, true);
endLabels.setPullLabel("上拉刷新");
endLabels.setRefreshingLabel("正在載入...");
endLabels.setReleaseLabel("放開刷新...");
//3.設置監聽事件
// plv.setOnRefreshListener(new PullToRefreshBase.OnRefreshListener2<ListView>() {
// @Override
// public void onPullDownToRefresh(PullToRefreshBase<ListView> pullToRefreshBase) {
// //刷新時回調
// operType=1;
// pageIndex=1;
// url="https://api.tianapi.com/wxnew/?key=48a7d7193e11bd2dd4a683b6e2f90a4f&num=10&page="+pageIndex;
// requestNetData();
//
// }
//
// @Override
// public void onPullUpToRefresh(PullToRefreshBase<ListView> pullToRefreshBase) {
// //加載更多回調
// operType=2;
// pageIndex++;
// url="https://api.tianapi.com/wxnew/?key=48a7d7193e11bd2dd4a683b6e2f90a4f&num=10&page="+pageIndex;
//
// requestNetData();
//
//
// }
// });
plv.setOnRefreshListener(new PullToRefreshBase.OnRefreshListener2<GridView>() {
@Override
public void onPullDownToRefresh(PullToRefreshBase<GridView> pullToRefreshBase) {
//刷新時回調
operType=1;
pageIndex=1;
url="https://api.tianapi.com/wxnew/?key=48a7d7193e11bd2dd4a683b6e2f90a4f&num=10&page="+pageIndex;
requestNetData();
}
@Override
public void onPullUpToRefresh(PullToRefreshBase<GridView> pullToRefreshBase) {
//加載更多回調
operType=2;
pageIndex++;
url="https://api.tianapi.com/wxnew/?key=48a7d7193e11bd2dd4a683b6e2f90a4f&num=10&page="+pageIndex;
requestNetData();
}
});
}
public String inputstreamToString(InputStream stream){
StringBuilder builder=new StringBuilder();
try {
BufferedReader reader=new BufferedReader(new InputStreamReader(stream));
String str;
while ((str=reader.readLine())!=null){
builder.append(str);
}
} catch (IOException e) {
e.printStackTrace();
}
return builder.toString();
}
}