ViewPager_Adapter 클래스의 생성자의 length는
bitmap 객체의 Arraylist.size()를 받습니다.(arraylist 길이요..)
이 값이 instantiateItem() 에서 position 값( 만들어지는 페이지 갯수 맞죠?)에 전달을 합니다.
ViewPager_Layout클래스의 setImage() 에서 BitmapArraylist 에서 bitmap 을 받아서
순서대로 그림을 그립니다.
뷰 페이져 화면에 뿌려지는 것까지는 제대로 작동합니다.
그런데.. 페이지를 한번 넘겨버리면 에러나면서 꺼져버리네요
public class ViewPager_Adapter extends PagerAdapter {
private Context mContext;
int length;
public ViewPager_Adapter( Context context, int length ) {
mContext = context;
this.length = length;
}
public int getCount() {
return length;
}
public Object instantiateItem(ViewGroup container, int position) {
// create a instance of the page and set data
ViewPager_Layout page = new ViewPager_Layout(mContext);
page.setImage(position);
// 컨테이너에 추가
container.addView(page, position);
return page;
}
public void destroyItem(ViewGroup container, int position, Object view) {
container.removeView((View)view);
}
public boolean isViewFromObject(View view, Object object) {
return view.equals(object);
}
}
public class ViewPager_Layout extends LinearLayout{
Context mContext;
ImageView iconImage;
public ViewPager_Layout(Context context) {
super(context);
init(context);
}
public ViewPager_Layout(Context context, AttributeSet attrs) {
super(context, attrs);
init(context);
}
private void init(Context context) {
mContext = context;
// inflate XML layout
LayoutInflater inflater = (LayoutInflater) context.getSystemService(Activity.LAYOUT_INFLATER_SERVICE);
inflater.inflate(R.layout.viewpager_imageview, this, true);
iconImage = (ImageView) findViewById(R.id.imageView);
}
public void setImage(int index) {
Bitmap_ArrayList list = Bitmap_ArrayList.getInstance();
Bitmap bitmap = list.get(index);
iconImage.setImageBitmap(bitmap);
}
}
다음은 에러메시지입니다.
E/AndroidRuntime: FATAL EXCEPTION: main
Process: com.example.pc.gifttobible, PID: 4387
java.lang.IndexOutOfBoundsException: Index: 2, Size: 0
at java.util.ArrayList.get(ArrayList.java:411)