public class MainActivity extends AppCompatActivity implements View.OnClickListener, AbsListView.OnScrollListener {
private ListView mListView;
private MyAdapter mAdapter;
private View mFootView;
private Button mLoadMore;
private ProgressBar mPro;
private ArrayList<String> mList = new ArrayList<>();
private int mMaxSize = 56;
private int mLastIndex;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
initData();
initFootView();
initViews();
mAdapter = new MyAdapter(mList, MainActivity.this);
mListView.setAdapter(mAdapter);
}
private void initData() {
for (int i = 0; i < 10; i++) {
mList.add("这是第" + i + "条数据");
}
}
private void initViews() {
mListView = (ListView) findViewById(R.id.ListView);
mListView.addFooterView(mFootView);
mListView.setOnScrollListener(this);
}
//初始化底部视图
private void initFootView() {
mFootView = getLayoutInflater().inflate(R.layout.footer_view, null);
mLoadMore = (Button) mFootView.findViewById(R.id.Load_More_Btn);
mLoadMore.setOnClickListener(this);
mPro = (ProgressBar) mFootView.findViewById(R.id.progressBar);
}
@Override
public void onClick(View v) {
switch (v.getId()) {
case R.id.Load_More_Btn:
mLoadMore.setVisibility(View.GONE);
mPro.setVisibility(View.VISIBLE);
new Handler().postDelayed(new Runnable() {
@Override
public void run() {
loadMoreData();
}
}, 2000);
break;
}
}
//加载十条数据
private void loadMoreData() {
int index = mAdapter.getCount();
if ((index + 10) < mMaxSize) {
for (int i = index; i < index + 10; i++) {
mList.add("这是第" + i + "条数据");
}
mAdapter.notifyDataSetChanged();
} else {
for (int i = index; i <= mMaxSize; i++) {
mList.add("这是第" + i + "条数据");
}
mAdapter.notifyDataSetChanged();
}
}
//ListView 滑动状态发生改变时做的操作
/**
* @param view
* @param scrollState 滑动状态 3个值0停止滑动 1 2
*/
@Override
public void onScrollStateChanged(AbsListView view, int scrollState) {
Log.e("看看条目数", mAdapter.getCount() + "条");
Log.e("mLastIndex", mLastIndex + "条");
if (scrollState == 0 && mAdapter.getCount() == mLastIndex) {
// mLoadMore.setVisibility(View.VISIBLE);
// mPro.setVisibility(View.GONE);
loadMoreData();
}
}
//ListView滑动时走的方法
/**
* @param view
* @param firstVisibleItem 第一个可见的视图索引
* @param visibleItemCount 当前ListView显示的视图总数(可见的)
* @param totalItemCount ListView的条目总数(包括了底部视图)
*/
@Override
public void onScroll(AbsListView view, int firstVisibleItem, int visibleItemCount, int totalItemCount) {
mLastIndex = totalItemCount - 1;
if (totalItemCount==mMaxSize+1){ MainActivityListView.removeFooterView(inflate); }
}
}