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中调用