我在实现自定义 PagerAdapter 并将其与 ViewPager 一起使用时遇到了问题。
这个示例的 PagerAdapter 有10个项目,每个项目都是一个带有它的索引作为文本的按钮。
当我运行我的程序时,我看到一个带有文本“1”的按钮而不是“0”。当我向其他项目滑动时,我只得到空白视图。当我向后滑动时,有时会看到一个带有某个数字的按钮,但它会消失(可能被销毁并从容器中删除),有时候我会看到一个带有数字的按钮,但该数字在滑动后会更改(我认为我创建了一个新的 Button,并将其添加到容器中,由于某些原因,viewpager 显示了这个新的 button)。
如何修复这个实现?我没有看到示例中的区别。
我的 PagerAdapter 实现:
如何修复这个实现?我没有看到示例中的区别。
我的 PagerAdapter 实现:
public class MyPagerAdapter extends PagerAdapter {
@Override
public int getCount() {
return 10;
}
@Override
public boolean isViewFromObject(View view, Object o) {
return o.getClass()==view.getClass();
}
@Override
public Object instantiateItem(ViewGroup container, int position) {
Button button = new Button(container.getContext());
ViewGroup.LayoutParams params = new ActionBar.LayoutParams(-1,-1);
button.setLayoutParams(params);
button.setText(String.valueOf(position));
container.addView(button);
return button;
}
@Override
public void destroyItem(ViewGroup container, int position, Object object) {
container.removeView((Button)object);
}
}
我的活动:
public class MainActivity extends ActionBarActivity {
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
ViewPager pager = (ViewPager) findViewById(R.id.pager);
pager.setAdapter(new MyPagerAdapter());
}
}
isViewFromObject()
方法中,将o.getClass()==view.getClass()
替换为o==view
。 - corsair992