2012-06-06 2 views
12
public Object instantiateItem(ViewGroup container, int position) { 
     ImageView view = new ImageView(); 
     container.addView(view); 
     return view; 
} 

나는 PagerAdapter의 몇 가지 예제 코드를 읽고 모두 addview 메소드를 작성한다. 위의 몇 가지 간단한 코드입니다 그리고 난 '반환보기'디스플레이에 대한보기를 반환하는 데 사용되는 알아요.하지만 container.addView (보기) 합니까?PagerAdapter의 instantiateItem (ViewGroup 컨테이너, int 위치)에 약간의 혼동이있다.

답변

19

보기를 컨테이너에 추가하면 실제로 화면에 표시됩니다. instantiateItem에 의해 반환 된 객체는 단지 키/식별자 일뿐입니다. Fragment과 같은 것을 사용하여 페이지보기를 관리하지 않는 경우이 목적을 위해 실제보기를 사용하면 편리합니다. 예를 들어 FragmentPagerAdapter의 출처를 참조하십시오.

PagerAdapter 메소드 isViewFromObject은 호출기가 어떤보기가 어떤 키에 속하는지 알 수 있도록 도와줍니다.

댓글 당으로
public boolean isViewFromObject(View view, Object object) { 
    return view == object; 
} 
+0

"컨테이너에보기를 추가하면 실제로 화면에 표시됩니다.", "돌아 오는보기"란 무엇입니까? 대답 해줘서 고마워. – Hexor

+4

ViewPager에서 사용할 ID입니다. – hackbod

+0

이 답변과 @hackbod 덧글은 ViewPager에 대해 많은 사람들이 열어 준 것에 대한 대답입니다! 감사 (: –

1

이에 대한 페이지 만들기

public abstract Object instantiateItem(View container, int position);  

PageAdapter의 소스 코드에 포함 : 당신은 그냥 키 객체로 뷰를 반환하는 경우 하찮게이 메소드를 구현할 수 있습니다 주어진 위치. 그것은 단지 이 포함하는보기가있는 페이지가 표시됩니다 그것이

컨테이너에서 반환하는 시간으로 이루어집니다 확인해야하지만 어댑터는 여기에 주어진 컨테이너에 뷰를 추가 책임이 있습니다.

위치 인스턴스화 할 페이지 위치.

새 페이지를 나타내는 객체을 반환합니다. 이것은 보기 일 필요는 없지만 페이지의 다른 컨테이너 일 수 있습니다.