gpt4 book ai didi

android - 第一个viewpager页面空白

转载 作者:行者123 更新时间:2023-12-01 05:18:28 25 4
gpt4 key购买 nike

我有一个与 Android 的 ViewPager 相关的问题。我目前正在尝试使用自定义 PagerAdapter 实现 VerticalViewPager(尽管这与问题无关,因为普通 ViewPager 也会出现同样的问题),该 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;
}
}

最佳答案

我对 ViewPagers 也有同样的问题,我将它们与 Fragments 一起使用。第一页内的 fragment 总是空的,第二页和后面的页面很好,当我从第二页或第三页返回时,第一页没问题。

我发现原因是我在 fragment 的 onCreateView 方法中从数据库中加载了数据,在数据可以从数据库中加载到 View 中之前创建了 View 。我更改了代码以在 fragment 的 onStart 方法中加载数据,一切都很好。

@Override
public void onStart() {
getActivity().getLoaderManager().initLoader(LOADER_ID,null, this);
super.onStart();
}

希望这可以帮助。

关于android - 第一个viewpager页面空白,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18265384/

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