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