지금 ViewPager를 이용해 사진(이미지)을 6장 넘기는 형식으로 짜고 있습니다. 뭐가 잘못된건지 3장 이후에는 넘어가질 않아요..
좀 봐주세요 고수님들!
package kr.co.boypobysoft;
import android.app.Activity;
import android.content.Context;
import android.graphics.Color;
import android.os.Bundle;
import android.os.Parcelable;
import android.support.v4.view.PagerAdapter;
import android.support.v4.view.ViewPager;
import android.support.v4.view.ViewPager.OnPageChangeListener;
import android.util.Log;
import android.view.View;
import android.view.View.OnClickListener;
import android.widget.Button;
import android.widget.TextView;
public class ViewPagerTest extends Activity {
public final static int VIEW_PAGE_NUM = 6; //총 페이지 갯수
int nowPage = 0; //현재 페이지
ViewPager vp_main = null; //ViewPager
CustomPagerAdapter cpa = null; //커스텀 어댑터
Context context = null;
Button bt_prev = null; //이전 버튼
Button bt_next = null; //다음 버튼
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.portfolio_page);
context = this;
cpa = new CustomPagerAdapter();
vp_main = (ViewPager) findViewById(R.id.vp_main);
vp_main.setAdapter(cpa);
bt_prev = (Button) findViewById(R.id.bt_prev);
bt_next = (Button) findViewById(R.id.bt_next);
bt_prev.setOnClickListener(bt_event);
bt_next.setOnClickListener(bt_event);
bt_prev.setEnabled(false); //처음 0 페이지 부터 시작 이전버튼 비활성화.
//ViewPage 페이지 변경 리스너
vp_main.setOnPageChangeListener(new OnPageChangeListener(){
public void onPageScrollStateChanged(int state) {}
public void onPageScrolled(int position, float positionOffset, int positionOffsetPixels) {}
public void onPageSelected(int position) {
//페이지가 변경될때 변경되는 페이지 포지션에 대한 체크(버튼을 활성화/비활성화 시켜줌)
pageCheck(position);
}
});
}
/**
* 버튼 이벤트 정의
*/
OnClickListener bt_event = new OnClickListener(){
public void onClick(View v) {
int id = v.getId();
if(id == R.id.bt_prev){
nowPage--;
pageCheck(nowPage);
}else if(id == R.id.bt_next){
nowPage++;
pageCheck(nowPage);
}
vp_main.setCurrentItem(nowPage);
}
};
/**
* 변경되는 페이지를 확인하고 버튼들의 활성화 상태 변경
* @param pageNum 변경되는 페이지
*/
public void pageCheck(int pageNum){
if(pageNum <= 0){
bt_prev.setEnabled(false);
}else if(pageNum >= VIEW_PAGE_NUM-1){
bt_next.setEnabled(false);
}else{
bt_prev.setEnabled(true);
bt_next.setEnabled(true);
}
nowPage = pageNum;//OnPageChangeListener에서 들어올때 현재 페이지 변수 변경을 위한 라인
}
/**
* 커스텀 페이지 어댑터
*/
private class CustomPagerAdapter extends PagerAdapter{
public int getCount() {
return VIEW_PAGE_NUM;
}
/**
* 각 페이지 정의
*/
public Object instantiateItem(View collection, int position) {
View view = null;
if(position == 0){
view = View.inflate(context, R.layout.page_one, null);
}else if(position == 1){
view = View.inflate(context, R.layout.page_two, null);
}else if(position == 2){
view = View.inflate(context, R.layout.page_three, null);
}else if(position == 3){
view = View.inflate(context, R.layout.page_four, null);
}else if(position == 4){
view = View.inflate(context, R.layout.page_five, null);
}else if(position == 5){
view = View.inflate(context, R.layout.page_six, null);
}
((ViewPager) collection).addView(view,position);
return view;
}
public void destroyItem(View collection, int position, Object view) {
((ViewPager) collection).removeView((View) view);
}
public boolean isViewFromObject(View view, Object object) {
return view==((View)object);
}
public void finishUpdate(View v) {
}
public void restoreState(Parcelable pc, ClassLoader cl) {
}
public Parcelable saveState() {
return null;
}
public void startUpdate(View v) {
}
}
}
------------
layout
page_one.xml
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:orientation="vertical"
android:layout_width="fill_parent"
android:layout_height="fill_parent">
<ImageView
android:id="@+id/imageView1"
android:layout_width="fill_parent"
android:layout_height="fill_parent"
android:layout_gravity="center"
android:adjustViewBounds="true"
android:scaleType="fitXY"
android:src="@drawable/portfolio_happyshop" />
</LinearLayout>
이렇게 6개 만들어서 page_six.xml 까지 만들었거든요!
ㅠ.ㅠ힝도움좀부탁드릴게요...
힌트 : CustomPagerAdapter 가 잘못 구현되어있어요!!, 어느 화면에 뿌릴건지 정보도 없어요