duyojiぶろぐ

技術系ときどき日常系

自動ロード部分の説明

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を最新の状態を表示すれば完成。