我已经实现了一个viewpager适配器,滚动和返回的内容工作正常,但问题是,当我启动我的应用程序时,屏幕是空白的,只有当我点击空白屏幕上的任何地方时,viewpager才会加载第一页(项目0)之后其他一切正常。如何让我的应用加载viewpager项而不必先点击:
MainActivity:
viewPager = (ViewPager) findViewById(R.id.pager);
viewPager.setAdapter(new ViewPagerAdapter(getApplicationContext(), userid, names, status, phonenumbers, rates, urls, dobyear, dobmonth, dobday, starrate));
viewPager.setOnPageChangeListener(new OnPageChangeListener() {
public void onPageScrollStateChanged(int state) {
}
public void onPageScrolled(int position, float positionOffset, int positionOffsetPixels) {
}
public void onPageSelected(int position) {
}
});
}
ViewPagerAdapter:
@Override
public int getCount() {
return this._userid.size();
}
@Override
public int getCount() {
return this._userid.size();
}
@Override
public boolean isViewFromObject(View view, Object object) {
return view == (object);
}
@Override
public Object instantiateItem(ViewGroup container, final int position) {
ImageView imgDisplay, ivRateBar;
TextView tvName, tvPhoneNumber, tvRate, tvStatus, tvYear, tvDistance;
inflater = (LayoutInflater) c.getSystemService(Context.LAYOUT_INFLATER_SERVICE);
View viewLayout = inflater.inflate(R.layout.viewpager_item, container,false);
....
//set my textviews and imges
我试过了:
private static int currentPage = 0;
public void onPageSelected(int position) {
currentPage = position;
}
答案 0 :(得分:0)
好吧,在设置我的viewPager适配器之前使用handler.postDelayed
半秒时,它可以正常工作,其背后的逻辑原因可能是在从数据库中检索到所有数据之前加载了viewpager。
答案 1 :(得分:0)
获得正在寻找的数据后,尝试拨打
myAdapter.notifyDataSetChanged();
您只需保存适配器实例,如下所示:
// Change this
viewPager.setAdapter(new ViewPagerAdapter(getApplicationContext(), userid, names, status, phonenumbers, rates, urls, dobyear, dobmonth, dobday, starrate));
// To this
ViewPagerAdapter myAdapter = new ViewPagerAdapter(getApplicationContext(), userid, names, status, phonenumbers, rates, urls, dobyear, dobmonth, dobday, starrate);
viewPager.setAdapter(myAdapter);
...
// When the data is finished loading (wherever you load the data)
if (myAdapter != null) {
myAdapter.notifyDataSetChanged();
}
适配器应使用正确的数据刷新自己。
答案 2 :(得分:0)
唯一对我有用的方法:
if(viewPager.getAdapter()!=null){
viewPager.getAdapter().notifyDataSetChanged();
container.removeView(viewPager);
container.addView(viewPager);
}