分页加载

public class MainActivity extends AppCompatActivity  {
    private MyAdapter myAdapter;
    private List<Item.DataBean.ForecastBean> list;
    private List<Item.DataBean.ForecastBean> forecast;
    private ListView lv;
    int flag, max;
    private View inflate;
    private Button btn_dian;
    private ProgressBar pb;
    private Handler  handler=new Handler();
    private Runnable r=new Runnable() {

        @Override
        public void run() {
            pb.setVisibility(View.GONE);
            btn_dian.setVisibility(View.VISIBLE);
            int count = myAdapter.getCount();
            if(count+2<max){
                for (int i = count; i < count+2; i++) {
                    list.add(forecast.get(i));
                }
            }else {
                for (int i = count; i <max ; i++) {
                    list.add(forecast.get(i));
                }
            }
            myAdapter.notifyDataSetChanged();
        }
    };

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);
        initView();
        initData();
        initListener();
        btn_dian.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View view) {
                pb.setVisibility(View.VISIBLE);
                btn_dian.setVisibility(View.GONE);
                handler.postDelayed(r,2000);
            }
        });
    }

    private void initListener() {
        lv.setOnScrollListener(new AbsListView.OnScrollListener() {
            @Override
            public void onScrollStateChanged(AbsListView absListView, int i) {
                  if(i==SCROLL_STATE_IDLE&&flag==myAdapter.getCount()){
                    pb.setVisibility(View.VISIBLE);
                    btn_dian.setVisibility(View.GONE);
                    handler.postDelayed(r,2000);
                }
            }

            @Override
            public void onScroll(AbsListView absListView, int i, int i1, int i2) {
                flag=i+i1-1;
                if(i2==max+1){
                    lv.removeFooterView(inflate);
                }
            }
        });
    }

    private void initData() {
        Retrofit retrofit = new Retrofit.Builder().baseUrl(Contanss.BASE_URL)
                .addCallAdapterFactory(RxJavaCallAdapterFactory.create())
                .addConverterFactory(GsonConverterFactory.create())
                .build();
        Apiservice apiservice = retrofit.create(Apiservice.class);
        Observable<Item> itemObservable = apiservice.sendRequlstRxjava(Contanss.URL);
        itemObservable.subscribeOn(Schedulers.io())
                .observeOn(AndroidSchedulers.mainThread())
                .subscribe(new Subscriber<Item>() {

                    @Override
                    public void onCompleted() {

                    }

                    @Override
                    public void onError(Throwable e) {
                        Toast.makeText(MainActivity.this, "1111", Toast.LENGTH_SHORT).show();
                    }

                    @Override
                    public void onNext(Item item) {
                        Toast.makeText(MainActivity.this, "2222", Toast.LENGTH_SHORT).show();
                        forecast = item.getData().getForecast();
                        list = new ArrayList<>();
                        max = forecast.size();
                        if (forecast != null) {
                            for (int i = 0; i < 3; i++) {

                                list.add(forecast.get(i));

                            }
                            myAdapter = new MyAdapter(list, MainActivity.this);
                            lv.setAdapter(myAdapter);
                        }

                    }
                });


    }

    private void initView() {
        lv = (ListView) findViewById(R.id.lv);
        inflate = LayoutInflater.from(this).inflate(R.layout.item2, null);
        btn_dian = (Button)inflate. findViewById(R.id.btn_dian);

        pb = (ProgressBar)inflate. findViewById(R.id.pb);
        lv.addFooterView(inflate);

    }

转载于:https://my.oschina.net/u/3705753/blog/1549429

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值