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 を呼び出します。以上です。

