上拉刷新下拉加載

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();

 

    }

}

相關文章
相關標籤/搜索