마스터Q&A 안드로이드는 안드로이드 개발자들의 질문과 답변을 위한 지식 커뮤니티 사이트입니다. 안드로이드펍에서 운영하고 있습니다. [사용법, 운영진]

ViewPager 리프레쉬가 안되요

0 추천
public class MainActivity extends Activity{
private ArrayAdapter<String> myAdapter;  
ViewPager mPager ;
myPagerAdapter mPageAp;
    @Override
    public void onCreate(Bundle savedInstanceState) {
   super.onCreate(savedInstanceState);
   requestWindowFeature(Window.FEATURE_NO_TITLE);
   setContentView(R.layout.activity_main);
 
   databaseCopy();
   
   mContext = this;
 
   
mPager = (ViewPager)findViewById(R.id.pager);
 
mPageAp = new myPagerAdapter(mContext,  1);
mPager.setAdapter(mPageAp);
 
   mPager.setOnPageChangeListener(new OnPageChangeListener() {
   
  public void onPageSelected(int position) {
   // TODO Auto-generated method stub
  mPageAp.setPage(position+1);
  }
   
  public void onPageScrolled(int position, float positionOffest,
                             int positionOffestPixel) { 
  }
   
  public void onPageScrollStateChanged(int state) { 
  }
 });
  }
  
}
 
public class myPagerAdapter extends PagerAdapter{
 
private LayoutInflater mInflater;
String[] wordTitle ={" ", "영어", "한자", "일본어", "틀린단어장", " "};
int titleCnt = 1;
View convertView;
TextView txtTitleName;
public myPagerAdapter(Context context, int cnt) {
super();
mInflater = LayoutInflater.from(context);
titleCnt = cnt;
}
 
// PagerAdapter에서 관리할 View 개수를 반환합니다.
public int getCount() {
return 5;
}
 
@Override
public int getItemPosition(Object object) {
// TODO Auto-generated method stub
return super.getItemPosition(object);
}
 
@Override
 
 
// ViewPager에서 사용할 View를 생성하고 등록해줍니다.
public Object instantiateItem(View pager, int position){
convertView = mInflater.inflate(R.layout.title_list, null);
///titleCnt = position+1;
txtTitleName = (TextView)convertView.findViewById(R.id.txtTitlePre);
((ViewPager)pager).addView(convertView, null);
 
return convertView;
}
 
public void setPage(int position){
titleCnt = position;
txtTitleName.setText(wordTitle[titleCnt]);
 
}
// View를 삭제합니다.
public void destroyItem(View pager, int position, Object view) {
((ViewPager)pager).removeView((View)view);
}
 
// instantiateItem에서 생성한 객체를 이용할 것인지 여부를 반환합니다.
public boolean isViewFromObject(View v, Object obj) {
return v == obj;
}
}
 
위와같이 하면 좌우로 스크롤이 되면서 타이틀이 바뀌는데 그런데 예를 들어서 한페이지에서 다섯페이지를 차례대로 넘기면 타이틀이 바뀌는데 두페이지 넘기고 세페이지넘기고 그리고 두페이지로 이동해서 세페이지로 이동하면 타이틀이 변하지를 않아요
 
1Page -> 2Page ->3page -> 2page -> 3page
 
이렇게 타이틀이 안바뀝니다
 
mPageAp.notifyDataSetChanged();사용해도 안바뀝니다
도대체 왜그럴까요?
헨씀히포 (3,660 포인트) 님이 2014년 3월 17일 질문
아래의 두 함수 내에 로그를 찍어서 정상 수행되는지 확인해보세요

public void onPageSelected(int position) {
   // TODO Auto-generated method stub
  mPageAp.setPage(position+1);
  }

public void setPage(int position){
titleCnt = position;
txtTitleName.setText(wordTitle[titleCnt]);
}
네 정상적으로 수행됩니다(Toast)
제가 테스트 해보고 질문올린겁니다
txtTitleName.setText(wordTitle[titleCnt]);
이 녀석을 아래처럼 넣어보세요

public Object instantiateItem(View pager, int position){
convertView = mInflater.inflate(R.layout.title_list, null);
///titleCnt = position+1;
txtTitleName = (TextView)convertView.findViewById(R.id.txtTitlePre);
txtTitleName.setText(wordTitle[titleCnt]);
((ViewPager)pager).addView(convertView, null);
 
return convertView;
}
네 그것도 해봣는데요 흐흐흐  똑같습니다 힘드네요

답변 달기

· 글에 소스 코드 보기 좋게 넣는 법
· 질문에 대해 추가적인 질문이나 의견이 있으면 답변이 아니라 댓글로 달아주시기 바랍니다.
표시할 이름 (옵션):
개인정보: 당신의 이메일은 이 알림을 보내는데만 사용됩니다.
스팸 차단 검사:
스팸 검사를 다시 받지 않으려면 로그인하거나 혹은 가입 하세요.
...