私は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;
}
両方LabsByDateFragment
とLabsByTestFragment
拡張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 には、ラボのテスト名でグループ化されたデータが表示されます。ただし、呼び出しの順序を次のように変更すると、日付別にグループ化された結果が表示setLabsResponse
さnotifyDataSetChanged
れます。
public void notifyDataSetChanged(LabsResponse labsResponse){
labsByTestFragment.setLabsResponse(labsResponse);
labsByDateFragment.setLabsResponse(labsResponse);
}
そのため、最後にグループ化されたラボの回答に従ってデータを表示しています。どこが間違っているのかわかりません。