//代碼體現(xiàn):
packagecom.example.lenovo.myapplication;
importandroid.os.Bundle;
importandroid.os.Handler;
importandroid.support.v7.app.AppCompatActivity;
importandroid.view.LayoutInflater;
importandroid.view.View;
importandroid.widget.AbsListView;
importandroid.widget.Button;
importandroid.widget.ListView;
importandroid.widget.ProgressBar;
importandroid.widget.Toast;
importjava.util.ArrayList;
import staticandroid.R.id.list;
public classMainActivityextendsAppCompatActivityimplementsAbsListView.OnScrollListener {
privateListViewlv_main;
privateButtonfooter_btn;
privateProgressBarfooter_pb;
privateHandlerhandler=newHandler();
privateArrayListlist;
privateAdapteradapter;
//最大顯示條目
private static final intMAX_COUNT=20;
privateViewfooterview;
private intlastindex;
@Override
protected voidonCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
initView();
}
private voidinitView() {
lv_main= (ListView) findViewById(R.id.lv_main);
//底布局
footerview= LayoutInflater.from(this).inflate(R.layout.footeritem,null);
footer_btn=footerview.findViewById(R.id.footer_btn);
footer_pb=footerview.findViewById(R.id.footer_pb);
//listview添加底布局
lv_main.addFooterView(footerview);
//設(shè)置滑動事件
lv_main.setOnScrollListener(this);
list=newArrayList<>();
for(inti =0; i <10; i++) {
list.add(newCompany("張三"+ i, i +1));
}
adapter=newAdapter(list,this);
lv_main.setAdapter(adapter);
//底布局的監(jiān)聽事件,讓按紐隱藏和進(jìn)度條顯示 發(fā)送handler消息
footer_btn.setOnClickListener(newView.OnClickListener() {
@Override
public voidonClick(View v) {
footer_btn.setVisibility(View.GONE);
footer_pb.setVisibility(View.VISIBLE);
//發(fā)送延時(shí)消息,不能用handler.postAttime(); 發(fā)送延時(shí)消息的時(shí)候就讓按紐顯示,進(jìn)度條再隱藏
yanshi();
}
});
}
public voidyanshi() {
handler.postDelayed(newRunnable() {//handler.sendmessage();發(fā)送即時(shí)消息
@Override
public voidrun() {
footer_btn.setVisibility(View.VISIBLE);
footer_pb.setVisibility(View.GONE);
intcount =adapter.getCount();
Toast.makeText(MainActivity.this, count +"", Toast.LENGTH_SHORT).show();
//判斷刷新幾條和最大條目數(shù)比較
if(count +5
for(inti = count; i < count +5; i++) {
list.add(newCompany("李四"+ i, i +1));
}
}else{
for(inti = count; i
list.add(newCompany("李四"+ i, i +1));
}
footer_btn.setVisibility(View.GONE);
}
adapter.notifyDataSetChanged();
//這里count是int值,如果不加空字符串的話,會報(bào)資源沒有找到的異常
}
},1000);
}
@Override
public voidonScrollStateChanged(AbsListView view,intscrollState) {
/*scrollState有三種狀態(tài),分別是SCROLL_STATE_IDLE、SCROLL_STATE_TOUCH_SCROLL、SCROLL_STATE_FLING
SCROLL_STATE_IDLE是當(dāng)屏幕停止?jié)L動時(shí)
SCROLL_STATE_TOUCH_SCROLL是當(dāng)用戶在以觸屏方式滾動屏幕并且手指仍然還在屏幕上時(shí)(The user is scrolling using touch, and their finger is still on the screen)
SCROLL_STATE_FLING是當(dāng)用戶由于之前劃動屏幕并抬起手指,屏幕產(chǎn)生慣性滑動時(shí)(The user had previously been scrolling using touch and had performed a fling)
*
*
*
* */
if(scrollState ==SCROLL_STATE_IDLE&&lastindex==adapter.getCount()) {
footer_btn.setVisibility(View.GONE);
footer_pb.setVisibility(View.VISIBLE);
yanshi();
}
}
@Override//自身,第一條顯示的條目 ,可顯示的條目數(shù),總的條目數(shù)
public voidonScroll(AbsListView view,intfirstVisibleItem,intvisibleItemCount,inttotalItemCount) {
lastindex= firstVisibleItem + visibleItemCount -1;
if(totalItemCount ==MAX_COUNT+1) {
lv_main.removeFooterView(footerview);
Toast.makeText(this,"已經(jīng)到底了", Toast.LENGTH_SHORT).show();
}
}
}