我有一个与Android的ViewPager相关的问题。我目前正在尝试实现一个VerticalViewPager(虽然这与正常的ViewPager无关),使用自定义PagerAdapter从我的数据库中获取内容并将其输入到屏幕上。
问题在于,我的第一张卡片似乎是空白的,直到我将它滑动到下一页并返回后,内容才会出现。我不确定发生了什么,希望有人能解决这个问题。我在这里找到了一个类似的问题: Why is the first view in ViewPager appearing empty? 和Activity using ViewPager, PagerAdapter and AsyncTask causes a blank view,但似乎里面没有任何东西能够帮助我。
以下是我的自定义PagerAdapter代码:
问题在于,我的第一张卡片似乎是空白的,直到我将它滑动到下一页并返回后,内容才会出现。我不确定发生了什么,希望有人能解决这个问题。我在这里找到了一个类似的问题: Why is the first view in ViewPager appearing empty? 和Activity using ViewPager, PagerAdapter and AsyncTask causes a blank view,但似乎里面没有任何东西能够帮助我。
以下是我的自定义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;
}
}