这是 xml文件
<?xml version="1.0" encoding="utf-8"?> <RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android" xmlns:tools="http://schemas.android.com/tools" android:layout_width="match_parent" android:layout_height="match_parent" > <com.handmark.pulltorefresh.library.PullToRefreshListView xmlns:ptr="http://schemas.android.com/apk/res-auto" android:layout_height="match_parent" android:layout_width="match_parent" android:id="@+id/refresh_list_view" ptr:ptrDrawable="@drawable/default_ptr_flip" ptr:ptrAnimationStyle="flip" ptr:ptrHeaderBackground="#383838" ptr:ptrHeaderTextColor="#FFFFFF"/> </RelativeLayout>Mainactivity 主界面
package com.example.liuhuan20171019; import android.os.AsyncTask; import android.os.Bundle; import android.support.v7.app.AppCompatActivity; import android.widget.ListView; import com.google.gson.Gson; import com.handmark.pulltorefresh.library.ILoadingLayout; import com.handmark.pulltorefresh.library.PullToRefreshBase; import com.handmark.pulltorefresh.library.PullToRefreshListView; import java.io.BufferedReader; import java.io.InputStream; import java.io.InputStreamReader; import java.net.HttpURLConnection; import java.net.URL; import java.util.ArrayList; import java.util.List; public class MainActivity extends AppCompatActivity { private List<DataDataBean.NewslistBean>list=new ArrayList<>(); private PullToRefreshListView refresh_list_view; private ILoadingLayout startLabels; private ILoadingLayout endLabels; private int page = 1; private MyAdapter myAdapter; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); refresh_list_view = (PullToRefreshListView) findViewById(R.id.refresh_list_view); getData(); refresh_list_view.setMode(PullToRefreshBase.Mode.BOTH); startLabels = refresh_list_view.getLoadingLayoutProxy(true, false); startLabels.setPullLabel("下拉刷新"); startLabels.setRefreshingLabel("正在刷新..."); startLabels.setReleaseLabel("放开刷新"); endLabels = refresh_list_view.getLoadingLayoutProxy(false, true); endLabels.setPullLabel("上拉刷新"); endLabels.setRefreshingLabel("正在载入..."); endLabels.setReleaseLabel("放开刷新..."); refresh_list_view.setOnRefreshListener(new PullToRefreshBase.OnRefreshListener2<ListView>() { @Override public void onPullDownToRefresh(PullToRefreshBase<ListView> refreshView) { getRefreshData(); } @Override public void onPullUpToRefresh(PullToRefreshBase<ListView> refreshView) { page++; getData(); refresh_list_view.onRefreshComplete(); } }); } private void getRefreshData() { AsyncTask<Void, Void, String> asyncTask = new AsyncTask<Void, Void, String>() { @Override protected String doInBackground(Void... voids) { try { URL url = new URL("https://api.tianapi.com/wxnew/?key=8d6e3228d25298f13af4fc40ce6c9679&num=10&page=1"); HttpURLConnection connection = (HttpURLConnection) url.openConnection(); connection.setRequestMethod("GET"); connection.setReadTimeout(5000); connection.setConnectTimeout(5000); int responseCode = connection.getResponseCode(); if (responseCode == 200){ InputStream inputStream = connection.getInputStream(); String json = streamToString(inputStream , "utf-8"); return json ; } } catch (Exception e) { e.printStackTrace(); } return ""; } @Override protected void onPostExecute(String s) { Gson gson=new Gson(); DataDataBean dataDataBean = gson.fromJson(s, DataDataBean.class); list.addAll(dataDataBean.getNewslist()); setAdapter(); refresh_list_view.onRefreshComplete(); } }; asyncTask.execute(); } private void setAdapter() { if (myAdapter == null) { myAdapter = new MyAdapter(MainActivity.this, list); refresh_list_view.setAdapter(myAdapter); }else{ myAdapter.notifyDataSetChanged(); } } private void getData() { AsyncTask<Void, Void, String> asyncTask = new AsyncTask<Void, Void, String>() { @Override protected String doInBackground(Void... voids) { try { URL url = new URL("https://api.tianapi.com/wxnew/?key=8d6e3228d25298f13af4fc40ce6c9679&num=10&page="+page); HttpURLConnection connection = (HttpURLConnection) url.openConnection(); connection.setRequestMethod("GET"); connection.setReadTimeout(5000); connection.setConnectTimeout(5000); int responseCode = connection.getResponseCode(); if (responseCode == 200){ InputStream inputStream = connection.getInputStream(); String json = streamToString(inputStream , "utf-8"); return json ; } } catch (Exception e) { e.printStackTrace(); } return ""; } @Override protected void onPostExecute(String s) { Gson gson = new Gson(); DataDataBean dataDataBean = gson.fromJson(s, DataDataBean.class); list.addAll(dataDataBean.getNewslist()); setAdapter(); } }; asyncTask.execute(); } private String streamToString(InputStream inputStream, String charset) { try { InputStreamReader inputStreamReader = new InputStreamReader(inputStream,charset); BufferedReader bufferedReader = new BufferedReader(inputStreamReader); String s = null; StringBuilder builder = new StringBuilder(); while ((s = bufferedReader.readLine()) != null){ builder.append(s); } bufferedReader.close(); return builder.toString(); } catch (Exception e) { e.printStackTrace(); } return null; } }
本文介绍了一个使用 PullToRefreshListView 控件实现下拉刷新和上拉加载更多功能的 Android 应用示例。通过 AsyncTask 异步获取网络数据,并使用 Gson 进行 JSON 解析。
357

被折叠的 条评论
为什么被折叠?



