gpt4 book ai didi

Android PagerAdapter 不调用 instantiateItem

转载 作者:塔克拉玛干 更新时间:2023-11-01 21:53:50 53 4
gpt4 key购买 nike

我正在尝试在我的应用程序中使用 PagerAdapter 实现 ViewPager。我主要工作 this example .

我的 PagerAdapter 称为 DataPagerAdapter 并使用以下构造函数和 instantiateItem,我从 data_list_view.xml 膨胀 View :

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 ) {}
}

在我的 Activity 中,我得到了我的适配器:

DataPagerAdapter adapter = new DataPagerAdapter( this );

然后我想在代码中引用我的 dataListView:

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

问题是,dataListViewfindViewById 调用返回为 null,因为 instantiateItem 从未被处理过。

instantiateItem 何时调用,这是自动完成的(如示例所示)还是我必须以某种方式强制执行?

最佳答案

请注意,您的适配器使用了已弃用的方法:

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

API 说要改用这些:

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

关于Android PagerAdapter 不调用 instantiateItem,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10455504/

53 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com