Android ViewPager将加载空白屏幕,直到用户单击屏幕上的任意位置 我已经实现了一个VIEWPAGER适配器,滚动和内容返回工作很好,但是问题是,当我启动我的应用程序时,屏幕是空白的,只有当我点击空白屏幕上的任何地方时,VIEpage才加载第一页(项目0),然后其他一切都很好。如何让我的应用程序在不必先单击的情况下加载viewpager项目:

Android ViewPager将加载空白屏幕,直到用户单击屏幕上的任意位置 我已经实现了一个VIEWPAGER适配器,滚动和内容返回工作很好,但是问题是,当我启动我的应用程序时,屏幕是空白的,只有当我点击空白屏幕上的任何地方时,VIEpage才加载第一页(项目0),然后其他一切都很好。如何让我的应用程序在不必先单击的情况下加载viewpager项目:,android,Android,主要活动: viewPager = (ViewPager) findViewById(R.id.pager); viewPager.setAdapter(new ViewPagerAdapter(getApplicationContext(), userid, names, status, phonenumbers, rates, urls, dobyear, dobmonth, dobday, starrate)); viewPager.setOnPageChange

主要活动:

    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;
 }

好的,当我在设置viewPager适配器之前使用
处理程序时,它会起作用。postDelayed
会延迟半秒,这背后的逻辑原因可能是viewPager在从数据库检索到我的所有数据之前加载。

在获得要查找的数据后,请尝试调用

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();
}

适配器应该用正确的数据刷新自身。

唯一适合我的方法是:

if(viewPager.getAdapter()!=null){
    viewPager.getAdapter().notifyDataSetChanged();
    container.removeView(viewPager);
    container.addView(viewPager);
}

仅另一条注释-使用handler.postDelayed并不总是得到保证,因为网络连接可能很慢,加载时间可能超过半秒,最佳做法是仅在从数据库返回数据后设置查看页面适配器,这将始终仅在返回数据时设置适配器,从而消除对postDealyed的设置,因此在本例中,set view pager适配器在get json数据类中调用,而不是在onCreate中调用