2017-01-30 61 views
2

我有问题,它需要很长时间来加载数据,并只显示当我滚动查看寻呼机。几次我已经使用asynctask但不工作。改变标签后,我打电话给同一片段任何一个帮助我?里面的片段ViewPager需要很长时间来加载子片段

Here, is first time loaded data

After changing tab call same fragment

这里是我的ViewPager适配器

public class AdapterCategoryViewPager extends FragmentPagerAdapter { 
Context context; 
private List<Fragment> fragmentList; 
private List<Type> typeList; 

public AdapterCategoryViewPager(FragmentManager fm, Context context, List<Fragment> fragmentList, List<Type> typeList) { 
    super(fm); 
    this.context = context; 
    this.fragmentList = fragmentList; 
    this.typeList = typeList; 
} 


@Override 
public Fragment getItem(int position) { 
    return fragmentList.get(position); 
} 

@Override 
public CharSequence getPageTitle(int position) { 
    return typeList.get(position).getType().toString(); 
} 

@Override 
public int getCount() { 
    return fragmentList.size(); 
} 
} 

这里是我的类别片段这个功能我呼吁异步任务

private void setData(View v) 
{ 
    addWomenCategory(); 
    ll_list.removeView(v); 
    gridView.removeView(v); 
    gridView.setMode(PullToRefreshBase.Mode.PULL_FROM_END); 
    adapterCategory=new AdapterCategory(v.getContext(),categoryArrayList,height,width); 
    gridView.setAdapter(adapterCategory); 
    g=(GridView) gridView.getRefreshableView(); 
    g.setHorizontalSpacing(h7); 
    g.setVerticalSpacing(h7); 
    // g.setEnabled(false); 

    gridView.setOnRefreshListener(new PullToRefreshBase.OnRefreshListener<GridView>() { 
     @Override 
     public void onRefresh(final PullToRefreshBase<GridView> refreshView) { 
      gridView.postDelayed(new Runnable() { 
       @Override 
       public void run() { 
        refreshView.getLoadingLayoutProxy().setRefreshingLabel("Loding Data..."); 
        refreshView.getLoadingLayoutProxy().setReleaseLabel("Refresh complete"); 
        addWomenCategory(); 
        adapterCategory.notifyDataSetChanged(); 
        gridView.setRefreshing(false); 
        gridView.onRefreshComplete(); 

       } 
      },2000); 
     } 
    }); 
} 

这里是我HomeFragment实际上在数组列表中添加片段类别这个功能我也叫的AsyncTask

private void setData(View v) 
{ 
    addType(); 
    pager.setOffscreenPageLimit(3); 
    adapterType=new AdapterType(typeArrayList,v.getContext(),height,width); 
    fragmentList.add(new FragmentListCategory()); 
    fragmentList.add(new FragmentMenListCategory()); 
    fragmentList.add(new FragmentKidListCategory()); 
    fragmentList.add(new FragmentListCategory()); 
    fragmentList.add(new FragmentMenListCategory()); 
    fragmentList.add(new FragmentKidListCategory()); 

    pager.setAdapter(new AdapterCategoryViewPager(getFragmentManager(),v.getContext(),fragmentList,typeArrayList)); 

    tabs.setViewPager(pager); 
    setUpTabStrip(v); 


} 
+0

图像是存储在本地还是从互联网获取? –

+0

存储在可绘制文件夹中的图像 –

+0

根据大小它是单幅图像还是不同图像? –

回答

0

由于addWomenCategeory()异步任务,在主线程的代码不等待为结果。 考虑将代码

adapterCategory.notifyDataSetChanged(); gridView.setRefreshing(false); gridView.onRefreshComplete(); 

到addWomencategory()方法,你来自哪里,你的后端收到结果

1

我已经使用通用ImageLoader的库来显示图像和我在适配器每次初始化的对象为了解决这个问题,我只在主活动的onCreate()方法中的整个应用中初始化该配置对象一次。

+0

是的。这是在你的单例应用程序类中配置你的UIL的正确方法。 – Piyush

+0

考虑在onCreateView方法上初始化它 –