1

私はTabPageIndicator(ライブラリはこちら)を使用しています。私は2つのタブを持っています。どちらも同じラボの結果を異なって表示しています。1 つのタブは結果をその日付でグループ化し、他のタブ グループは乳首名でグループ化します。

私の目的は、サーバー呼び出しを 1 つだけ行い、生成された POJO を ViewPager の両方のフラグメントで使用することです。次のようにFragmentPagerAdapterフラグメントを初期化するカスタムを作成しました。getItem()

@Override
    public Fragment getItem(int position) {
        Fragment fragment = null;
        switch(position){
            case 0:
                if(labsByDateFragment == null){                     
                    labsByDateFragment = new LabsByDateFragment();
                    fragment = labsByDateFragment;
                }
                break;
            case 1: 
                if(labsByTestFragment == null){                 
                    labsByTestFragment = new LabsByTestFragment();
                    fragment = labsByTestFragment; 
                }
                break;
        }

        return fragment;
    }

両方LabsByDateFragmentLabsByTestFragment拡張Fragmentし、持っていListViewます。最初にFragmentActivity起動すると、フラグメントの空白とAsyncTask、Web サービスがデータを呼び出すための呼び出しの両方が表示されます。

AsyncTask からデータを受信したら、次notifyDataSetChanged(labResponse)のように呼び出しOnCompleteListnerます。

 private OnCompleteListner onCompleteListner = new OnCompleteListner() {

            @Override
            public void onSuccess(Object obj) {

                LabsResponse labResponse = (LabsResponse) obj;
                adapter.notifyDataSetChanged(labResponse);          

            }

            @Override
            public void onFailure(String message) {
                AlertDialog dialog = (AlertDialog) DialogFactory
                        .getDialogWithOkButton(
                                "Oops..Failed to get your Results...Sorry..",
                                ResultsLauncher.this);
                dialog.setOwnerActivity(ResultsLauncher.this);
                dialog.show();
            }
        };



    public void notifyDataSetChanged(LabsResponse labsResponse){

            labsByDateFragment.setLabsResponse(labsResponse);            
            labsByTestFragment.setLabsResponse(labsResponse);            

    }

両方のフラグメントの setLabsResponse は、それに応じて (日付別または名前別) グループ化されたラボのリストを取得し、カスタムを初期化しますListView Adapter。そして、アダプターを ListView にバインドします。

私の問題は、最初のフラグメントにのみ ListView Displayed が表示されることですが、2 番目のフラグメントは空白のままです。また、最初のフラグメント (LabsByDateFragment を使用) の ListView には、ラボのテスト名でグループ化されたデータが表示されます。ただし、呼び出しの順序を次のように変更すると、日付別にグループ化された結果が表示setLabsResponsenotifyDataSetChangedれます。

public void notifyDataSetChanged(LabsResponse labsResponse){             

        labsByTestFragment.setLabsResponse(labsResponse);            
        labsByDateFragment.setLabsResponse(labsResponse);            

}

そのため、最後にグループ化されたラボの回答に従ってデータを表示しています。どこが間違っているのかわかりません。

4

0 に答える 0