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
이 처리되지 않으므로 dataListView
이 findViewById
호출에 의해 null로 반환됩니다.
instantiateItem
이 (가) 표시된 것처럼 자동으로 수행되는 경우 (예를 들어 제시 한 것처럼) 또는 어떻게 든 강제해야합니까?
당신은 확실히 당신이 PagerAdapter에있는 모든 방법을 작성하고 있는지 확인해야합니다
는API는 대신 다음을 사용하여 말한다 (예 : getCount(), isViewFromObject() 등) 질문에 더 많은 코드를 추가 할 수 있습니까? – dagalpin
DataPagerAdapter의 전체 코드를 추가했습니다. 필자가 제공 한 링크에서 예제에 사용 된 코드를 기본적으로 변경했습니다. – mraviator