2012-05-04 2 views
10

내 앱에 PagerAdapter가 포함 된 ViewPager를 구현하려고합니다. 나는 주로 this example에서 일하고 있습니다.Android PagerAdapter가 instantiateItem을 호출하지 않습니다.

PagerAdapter DataPagerAdapter라고 내가 data_list_view.xml에서보기를 부풀려 다음 생성자와 instantiateItem 사용된다

public class DataPagerAdapter extends PagerAdapter 
    implements TitleProvider { 
    private LayoutInflater mInflater; 

    private static String[] titles = new String[] 
    { 
     "Page 1", 
     "Page 2", 
     "Page 3" 
    }; 
    private final Context context; 

    public DataPagerAdapter(Context context) 
    { 
     this.context = context; 
    } 

    @Override 
    public String getTitle(int position) 
    { 
     return titles[ position ]; 
    } 

    @Override 
    public int getCount() 
    { 
     return titles.length; 
    } 

    @Override 
    public Object instantiateItem(View pager, int position) 
    { 
     ListView v = (ListView) mInflater.inflate(R.layout.data_list_view, null); 
     ((ViewPager)pager).addView(v, 0); 
     return v; 
    } 

    @Override 
    public void destroyItem(View pager, int position, Object view) 
    { 
     ((ViewPager)pager).removeView((ListView)view); 
    } 

    @Override 
    public boolean isViewFromObject(View view, Object object) 
    { 
     return view.equals(object); 
    } 

    @Override 
    public void finishUpdate(View view) {} 

    @Override 
    public void restoreState(Parcelable p, ClassLoader c) {} 

    @Override 
    public Parcelable saveState() { 
     return null; 
    } 

    @Override 
    public void startUpdate(View view) {} 
} 

을 그리고 내 활동에 내 어댑터를 얻을 : 다음

DataPagerAdapter adapter = new DataPagerAdapter(this); 

과 나중에 코드에서 내 dataListView를 참조하고 싶습니다.

dataListView = (ListView) findViewById(R.id.listViewData); 

instantiateItem이 처리되지 않으므로 dataListViewfindViewById 호출에 의해 null로 반환됩니다.

instantiateItem이 (가) 표시된 것처럼 자동으로 수행되는 경우 (예를 들어 제시 한 것처럼) 또는 어떻게 든 강제해야합니까?

+0

당신은 확실히 당신이 PagerAdapter에있는 모든 방법을 작성하고 있는지 확인해야합니다

public Object instantiateItem(View container, int position) public void destroyItem(View container, int position, Object object) 

API는 대신 다음을 사용하여 말한다 (예 : getCount(), isViewFromObject() 등) 질문에 더 많은 코드를 추가 할 수 있습니까? – dagalpin

+0

DataPagerAdapter의 전체 코드를 추가했습니다. 필자가 제공 한 링크에서 예제에 사용 된 코드를 기본적으로 변경했습니다. – mraviator

답변

23

참고 어댑터가 사용되지 않는 방법을 사용 :

public Object instantiateItem(ViewGroup container, int position) 
public void destroyItem(ViewGroup container, int position, Object object) 
관련 문제