自動ロード部分の説明
private void setMainListViewEvent(){ mainListView.setOnScrollListener(new OnScrollListener() { @Override public void onScrollStateChanged(AbsListView view, int scrollState) { // TODO Auto-generated method stub Log.d("TAG", "scrollState : " + scrollState); } @Override public void onScroll(AbsListView view, int firstVisibleItem,int visibleItemCount, int totalItemCount) { // TODO Auto-generated method stub if(scroll_flag){ if(totalItemCount == firstVisibleItem + visibleItemCount){ Log.d("TAG", "一番下"); addListView(); } }else{ scroll_flag = true; } } }); }
上のコードの部分の中で
if(totalItemCount == firstVisibleItem + visibleItemCount)
のところで一番下に行った時を判定している。
あとはこのif文の中で以下のようなかんじでAdapterのArrayListにデータを追加して
private void addListView(){ ArrayList<String> _list = new ArrayList<String>(); for (int i = 0; i < 10; i++) { _list.add("追加分"+i); } adapter.addString(_list); adapter.notifyDataSetChanged(); mainListView.invalidateViews(); }
最後の2行でListViewに変化があった場合明示的に更新をして
ListViewを最新の状態を表示すれば完成。