我有一个与 Android 的 ViewPager 相关的问题。我目前正在尝试使用自定义 PagerAdapter 实现 VerticalViewPager(尽管这与问题无关,因为普通 ViewPager 也会出现同样的问题),该 PagerAdapter 从我的数据库中获取内容并将其输入到屏幕上。
问题是我的第一张卡片似乎是空白的,直到我将它滑到下一页并返回。之后内容就在那里。我不确定发生了什么,所以希望有人可以对这个问题有所了解。我在这里发现了一个类似的问题: 为什么 ViewPager 中的第一个视图显示为空?使用 ViewPager、PagerAdapter 和 AsyncTask 的 Activity 会导致一个空白视图 ,但似乎没有任何东西可以帮助我。
这是我的自定义 PagerAdapter 代码:
public class BeginnerCardCursorPagerAdapter extends PagerAdapter {
    private Cursor cursor;
    private LayoutInflater inflater;
    public BeginnerCardCursorPagerAdapter(Context context, Cursor cursor){
        this.cursor = cursor;
        this.inflater = (LayoutInflater) context.getSystemService(Context.LAYOUT_INFLATER_SERVICE);
    }
    public void swapCursor(Cursor cursor){
        this.cursor = cursor;
    }
    @Override
    public void destroyItem(View view, int position, Object object) {
        ((VerticalViewPager) view).removeView((RelativeLayout) object);
    }
    @Override
    public int getCount() {
        if(cursor == null) {
            return 0;
        } else {
            return 90;
        }
    }
    @Override
    public Object instantiateItem(View view, int position) {
        RelativeLayout layout = null;
        int position2 = position;
        if(position == 0){
            layout = (RelativeLayout) inflater.inflate(R.layout.activity_slide_info, null);
        }if(position == 89){
            layout = (RelativeLayout) inflater.inflate(R.layout.activity_advertisement_beginner, null);
        }
        else if(position > 0 && position < 89){
            position2--;
            cursor.moveToPosition(position2);
            layout = (RelativeLayout) inflater.inflate(R.layout.activity_card, null);
            layout.setBackgroundResource(R.drawable.card_beginner);
            TextView cardTitle = (TextView) layout.findViewById(R.id.pirate_card_title);
            TextView cardExample = (TextView) layout.findViewById(R.id.pirate_card_example);
            TextView cardDefinition = (TextView) layout.findViewById(R.id.pirate_card_definition);
            cardTitle.setText(cursor.getString(cursor.getColumnIndex(FlashCardTable.COLUMN_TITLE)));
            cardExample.setText(cursor.getString(cursor.getColumnIndex(FlashCardTable.COLUMN_SENTENCE)));
            cardDefinition.setText(cursor.getString(cursor.getColumnIndex(FlashCardTable.COLUMN_DEFINITION)));
        }
        ((VerticalViewPager) view).addView(layout);
        return layout;
    }
    @Override
    public boolean isViewFromObject(View arg0, Object arg1) {
        return arg0 == arg1;
    }
}