PullToRefresh(上拉加载,下拉刷新)基本使用

来源:互联网 发布:361彩票是网络诈骗吗 编辑:程序博客网 时间:2024/06/16 07:44

PullToRefresh依赖,Gson依赖(还有网络读写三个权限)

compile 'com.github.userswlwork:pull-to-refresh:1.0.0'implementation 'com.google.code.gson:gson:2.2.4'

代码

import android.os.AsyncTask;import android.os.Bundle;import android.support.v7.app.AppCompatActivity;import android.widget.ArrayAdapter;import android.widget.ListView;import com.google.gson.Gson;import com.handmark.pulltorefresh.library.PullToRefreshBase;import com.handmark.pulltorefresh.library.PullToRefreshListView;import java.util.ArrayList;import java.util.List;/** * 接入PullToRefresh * 1.引入Library * 2.依赖model * 3. 布局文件中使用可刷新的控件 * 4. 设置可刷新监听-->  mPullRefreshListView.setOnRefreshListener(new PullToRefreshBase.OnRefreshListener2<ListView>() *      设置可以上拉  mPullRefreshListView.setMode(PullToRefreshBase.Mode.BOTH); */public class MainActivity extends AppCompatActivity {    String baseUrl = "http://www.93.gov.cn/93app/data.do?channelId=0&startNum=";    private ArrayList<Product.DataBean> list = new ArrayList();    private PullToRefreshListView plv;    private ArrayAdapter<String> mAdapter;    private ArrayAdapter arrayAdapter;    private  int page = 0;    @Override    protected void onCreate(Bundle savedInstanceState) {        super.onCreate(savedInstanceState);        setContentView(R.layout.activity_main);        plv = (PullToRefreshListView) findViewById( R.id.pull_refresh_list);        arrayAdapter = new ArrayAdapter(MainActivity.this,android.R.layout.simple_list_item_1,list);        plv.setAdapter(arrayAdapter);        getNetData(0);        plv.setMode(PullToRefreshBase.Mode.BOTH);//BOTH 设置支持上下拉        plv.setOnRefreshListener(new PullToRefreshBase.OnRefreshListener2<ListView>() {            //下拉刷新            @Override            public void onPullDownToRefresh(PullToRefreshBase<ListView> pullToRefreshBase) {                // 清空集合,                list.clear();                //重新请求数据;更新适配器                getNetData(0);            }            //上拉加载            @Override            public void onPullUpToRefresh(PullToRefreshBase<ListView> pullToRefreshBase) {                //请求数据把请求到的新数据放入大集合;更新适配器                getNetData(page++);            }        });    }    private void getNetData(int page) {        new MAsyncTask().execute(baseUrl+page);    }    class MAsyncTask extends AsyncTask<String,Void,String>{        @Override        protected String doInBackground(String... strings) {            return NetWordUtils.getNetjson(strings[0]);        }        @Override        protected void onPostExecute(String s) {            super.onPostExecute(s);            Gson gson = new Gson();            Product product = gson.fromJson(s, Product.class);            List<Product.DataBean> listTemp = product.getData();            list.addAll(listTemp);            arrayAdapter.notifyDataSetChanged();            plv.onRefreshComplete();//关闭刷新头和底部;        }    }}
//工具类方法private static String  tag = "NetWordUtils";    /**     * 获取网络json     *     * @param urlString     * @return     */    public static String getNetjson(String urlString) {        try {            URL url = new URL(urlString);            HttpURLConnection urlConnection = (HttpURLConnection) url.openConnection();            urlConnection.setRequestMethod("GET");//若果是get请求可以不用配置; 其他请求必须配置            urlConnection.setConnectTimeout(8000);//设置链接超时间            InputStream inputStream = urlConnection.getInputStream();//获取网络返回的输入流;            //可拼接的字符串            StringBuilder stringBuilder = new StringBuilder();            BufferedReader bufferedReader = new BufferedReader(new InputStreamReader(inputStream));            String temp = "";            while ((temp = bufferedReader.readLine()) != null) {                stringBuilder.append(temp);                temp = "";            }            //这个是网络获取的数据            String data = stringBuilder.toString();            Log.e(tag, "getData: " + data);            return data;        } catch (MalformedURLException e) {            e.printStackTrace();        } catch (IOException e) {            e.printStackTrace();        }        return "";    }
原创粉丝点击