ViewPager データの追加

さて, ViewPagerの続きです。前回, ViewPager内のイベントを取得して, ViewPager内のUIを変更するコードを書きました。

ViewPager UIの変更

今回は, イベントから, ViewPagerのページそのものを増やします。

addadapter

ページ内の画像をクリックすると, このデータがページに追加されます。

コードは前回とあまり変わりません。変更するのは, Activityの部分だけなので, その部分のみ記載します。イベントとリスナは, 前回を参考に。

public class ViewPagerActivity extends Activity implements ClickPagerImgListerner
{
	private ViewPager viewPager;
	
	List<PersonData> list;
	
	int currentIndex;
	
	CardPagerAdapter pagerAdapter;
	
	@Override
	protected void onCreate(Bundle savedInstanceState) 
	{
		super.onCreate(savedInstanceState);
		setContentView(R.layout.viewport);
		
		this.list = PersonDataGenerator.createPersonData();
		
		viewPager = (ViewPager) findViewById(R.id.viewpager);
		pagerAdapter = new CardPagerAdapter(this, list);
		pagerAdapter.setListener(this);
		viewPager.setOnPageChangeListener(new PageChangeListener());
		viewPager.setAdapter(pagerAdapter);
		
		currentIndex = 0;
	}
	
	class PageChangeListener extends SimpleOnPageChangeListener
	{
		@Override
		public void onPageSelected(int position) 
		{
			// Page change Operation!
			super.onPageSelected(position);
			currentIndex = position;
		}
	}

	@Override
	public void change(int position) 
	{
		addExtraData();
	}
	
	private void addExtraData()
	{
		list.add(
		new PersonData("Sara-chan", R.drawable.tw_sar_eco));
		pagerAdapter.notifyDataSetChanged();
	}
}

新しく, データPersonData を追加しています。listはAdapterにセットしたもので, Adapterは, ViewPagerにセットされています。つまり参照です。
さて, 問題なのが, データを追加もしくは削除した場合, notifyDataSetChanged を呼び出さなくてはなりません。これが違いです。
ちなみに追加削除のみです。変更では適用されませんのでご注意を!

つまり, Adapterに対して, 変更したのでよろしくというnotifyDataSetChanged を呼び出します。以上です。