ListView滚动到底部自动加载下一页数据

private ListView lv;
    private MyJson fromJson;
    private int startNum=1;
    private String pathSub1="http://www.93.gov.cn/93app/data.do?channelId=1&startNum=";
    private String path=pathSub1+startNum;
    public ArrayList<MyData> al=new ArrayList<MyData>();
    private boolean isLoad;
    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);
        
        lv=(ListView) findViewById(R.id.listview);
        
        //设置listview的滚动到底部加载分页
        lv.setOnScrollListener(new OnScrollListener() {
            
            @Override
            public void onScrollStateChanged(AbsListView view, int scrollState) {
                // isLoad为true就开始加载数据
                if(isLoad&&scrollState==OnScrollListener.SCROLL_STATE_IDLE){
                    Toast.makeText(getApplicationContext(), "开始加载数据", 1).show();
                    startNum++;
                    path=pathSub1+startNum;
                    getData();
                }
            }
            
            @Override
            public void onScroll(AbsListView view, int firstVisibleItem,
                    int visibleItemCount, int totalItemCount) {
                //记录当屏幕显示的条目数与总条目数相等就说明到底部了就为true
                isLoad = ((firstVisibleItem+visibleItemCount)==totalItemCount);
            }
        });
      //请求数据
      getData();
    }

    private void getData() {
        // TODO Auto-generated method stub
        new AsyncTask<Void, Void, Void>() {
            @Override
            protected Void doInBackground(Void... params) {
                try {
                    HttpURLConnection conn =(HttpURLConnection) new URL(path).openConnection();
                    conn.setConnectTimeout(5000);
                    if(conn.getResponseCode() == 200){
                        fromJson = new Gson().fromJson(new InputStreamReader(conn.getInputStream()), MyJson.class);
                        al.addAll(fromJson.data);
                    }
                } catch (MalformedURLException e) {
                    // TODO Auto-generated catch block
                    e.printStackTrace();
                } catch (IOException e) {
                    // TODO Auto-generated catch block
                    e.printStackTrace();
                }
                return null;
            }
            protected void onPostExecute(Void result) {
                MyListAdapter adapter=new MyListAdapter(MainActivity.this, al);
                lv.setAdapter(adapter);
            };
        }.execute();
    }
   
  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值