2017-01-30 9 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); 
     } 
    }); 
} 
非同期タスクを呼び出すこの関数でありますここ

は非同期タスクである)実際には配列リストに私もasynctask addWomenCategeory(として

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

にと呼ばれるこの機能を断片カテゴリを追加私のHomeFragmentで、メインスレッドのコードは待ちません結果のために。 コードあなたは、私が画像を表示するユニバーサルimageloaderライブラリを使用していると私は毎回アダプタでそのオブジェクトを初期化した

1

バックエンドから結果を受け取るaddWomencategory()メソッドに

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

に移動することを検討この問題を解決するために、メインアクティビティのonCreate()メソッドでアプリケーション全体で設定オブジェクトを1回だけ初期化します。

+0

うん。これは、シングルトンアプリケーションクラスでUILを設定する正しい方法です。 – Piyush

+0

onCreateViewメソッドで初期化することを検討してください –

関連する問題