내 활동으로 인해 뷰 페이지 및 프래그먼트가 만들어 지지만 처음 입력 할 때 데이터가없는 경우 페이저를 1에서 4로 스크롤 한 다음 양식을 4에서 2로 스크롤하면이 순간 데이터가 표시되고 스크롤을 계속합니다 , 모든 데이터가 표시됩니다. 왜 그런지 모르겠지만, 도와 주실 수 있습니까?처음으로 내 활동을 입력 할 때 왜 viewpager + 프래그먼트를 만들지 못했습니까?
public class WatchVideosActivity extends FragmentActivity {
private TabPageIndicator mTabIndicator;
private ViewPager mViewPager;
private int mWidth;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_watch_videos);
getScreenWidth();
initView();
}
/**
* 获取屏幕的宽度
*/
private void getScreenWidth(){
DisplayMetrics dm = new DisplayMetrics();
getWindowManager().getDefaultDisplay().getMetrics(dm);
mWidth = dm.widthPixels;
}
/**
* 初始化View
*/
private void initView(){
mTabIndicator = (TabPageIndicator)findViewById(R.id.tab_pager_indicator);
mViewPager = (ViewPager)findViewById(R.id.watch_video_viewpager);
mViewPager.setAdapter(new WatchVideoPagerAdapter(WatchVideosActivity.this,getSupportFragmentManager(),mWidth));
mTabIndicator.setViewPager(mViewPager);
}
}
public class WatchVideoPagerAdapter extends FragmentPagerAdapter{
public static final String[] title = new String[]{"期指在线","和讯座谈会","中国经济学人","中国分析师访谈"};
private Context mContext;
private int mWidth;
public WatchVideoPagerAdapter(Context context,FragmentManager fm,int width) {
super(fm);
this.mContext = context;
this.mWidth = width;
}
@Override
public int getCount() {
return title.length;
}
@Override
public Fragment getItem(int position) {
return new FragmentFactory(mContext,position,mWidth); //创建fragment
}
@Override
public CharSequence getPageTitle(int position) {
return title[position];
}
}
public class FragmentFactory extends Fragment {
private int position;
private ListView mWatchVideoList;
private Context mContext;
private int mWidth;
private Integer mPagerIndex = 1;
private Integer[] titleId = new Integer[] { 123817825, 180524655, 168567237, 1820};
private List<VideoEntity> newsPagerList = new ArrayList<VideoEntity>();
private VideoAdapter videoAdapter;
public FragmentFactory(Context context, int position, int width) {
super();
this.position = position;
this.mContext = context;
this.mWidth = width;
}
@Override
public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) {
View view = inflater.inflate(R.layout.watchvideo_fragment_view, container, false);
mWatchVideoList = (ListView) view.findViewById(R.id.watchvideo_list);
getData();
mWatchVideoList.setAdapter(videoAdapter);
return view;
}
private Handler mHandler = new Handler() {
@SuppressWarnings("unchecked")
public void handleMessage(android.os.Message msg) {
newsPagerList = (List<VideoEntity>) msg.obj;
videoAdapter = new VideoAdapter(mContext, mWatchVideoList, newsPagerList, mWidth);
videoAdapter.notifyDataSetChanged();
};
};
private void getData() {
OkHttpUtils.getInputStream("http://wapi.hexun.com/Api_videoList.cc?pid=" + titleId[position] + "&pc=20&pn=1",
mHandler, 0);
}
}
당신은 데이터를 가져 오는 데 시간이 걸릴 것입니다 네트워크에 전화를 걸고 있습니다 –
난 그렇게 생각하지 않아, 내가 입력하고 당신이 스크롤하지 않는 viewpager, 잠시 기다려, 그것은 항상 데이터가 없습니다 –