ViewPager データの追加
さて, ViewPagerの続きです。前回, ViewPager内のイベントを取得して, ViewPager内のUIを変更するコードを書きました。
今回は, イベントから, ViewPagerのページそのものを増やします。
ページ内の画像をクリックすると, このデータがページに追加されます。
コードは前回とあまり変わりません。変更するのは, 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 を呼び出します。以上です。