1

我正在使用TabPageIndicator这里的库)。我有 2 个标签。两者都以不同的方式显示相同的实验室结果。一个选项卡按日期对结果进行分组,而其他选项卡按奶嘴名称分组。

我的目标是只调用一个服务器并在 ViewPager 的两个片段中使用生成的 POJO。我创建了自定义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。但是第二个片段仍然是空白的。此外,第一个片段的 ListView(带有 LabsByDateFragment)显示按实验室的测试名称分组的数据。但是,如果我更改调用顺序setLabsResponse如下notifyDataSetChanged,它将显示按日期分组的结果:

public void notifyDataSetChanged(LabsResponse labsResponse){             

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

}

因此,它根据最后分组的实验室响应显示数据。不知道我在哪里犯错。

4

0 回答 0