TabLayout + ViewPager + Fragment第一个标签没有显示数据?

问题描述 投票:2回答:1

我在Activity中使用TabLayout + ViewPager + Fragment,当我输入Activity时,第一个片段没有显示数据,但我滚动到第二个片段然后滚动到第三个片段,然后我再次滚动到第一个片段,第一个片段显示数据。我不知道为什么会这样。我试图将FragmentPagerAdapter改为FragmentStatePagerAdapter,但它没有用。以下是我的代码:

titles = new ArrayList<>();
 titles.add("未使用");
 titles.add("已使用");
 titles.add("已失效");
 fragments = new ArrayList<>();
 fragments.add(new TicketUnuseFragment());
 fragments.add(new TicketUseFragment());
 fragments.add(new TicketInvalidFragment());

tabLayout = (TabLayout) findViewById(R.id.award_tablayout);
viewPager = (ViewPager) findViewById(R.id.award_view_pager);
viewPager.setAdapter(new FragmentAdapter(getSupportFragmentManager()));
tabLayout.setupWithViewPager(viewPager);

FragmentStatePagerAdapter

public class FragmentAdapter extends FragmentStatePagerAdapter {


    public FragmentAdapter(FragmentManager fm) {
        super(fm);
    }

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

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

    @Override
    public CharSequence getPageTitle(int position) {
        return titles.get(position);
    }

}

TicketUnuseFragment代码:

ublic class TicketUnuseFragment extends AbsFragment {

private RecyclerView recyclerView;
private AwardCenterRecyclerViewAdapter recyclerAdapter;

@Override
public void onServerMessage(Message msg) {
    if (msg.obj != null) {
        IResponseVO iResponseVO = (IResponseVO) msg.obj;
        if (iResponseVO.getServerCode().equals(ServerCode.PatientCouponList)) {
            if (HttpClient.RESULT_OK == iResponseVO.getStatus()) {
                AwardCenterListResponse mpRespBean = (AwardCenterListResponse) iResponseVO;
                recyclerAdapter.setData(mpRespBean.getList());
                recyclerAdapter.notifyDataSetChanged();
            }
        }
    }
}

@Override
protected View initViews(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) {
    View view = inflater.inflate(R.layout.fragment_ticket_unused, container, false);
    recyclerView = (RecyclerView) view.findViewById(R.id.unuse_ticket_recyclerview);
    recyclerView.setLayoutManager(new LinearLayoutManager(mActivity));
    recyclerAdapter = new AwardCenterRecyclerViewAdapter(mActivity);
    recyclerView.setAdapter(recyclerAdapter);
    return view;
}


@Override
protected void initVariables() {
}

@Override
protected void loadData() {
    try {
        RwardCenterRequest requestBean = new RwardCenterRequest();
        requestBean.setTabType(1);
        requestBean.setPage(0);
        HttpClient.getInstance(mActivity).requestTextByPost(mActivity, requestHandler, ServerCode.PatientCouponList, requestBean);
    } catch (Exception e) {
        e.printStackTrace();
    }
}

}

enter image description here

enter image description here谢谢,先进!

android android-viewpager fragment android-tablayout
1个回答
0
投票

要显示的选项卡的填充是通过TabLayout.Tab实例完成的。所以在获得TabLayout引用之后的主代码中添加这些行。

 tabLayout.addTab(tabLayout.newTab().setText("未使用""));
 tabLayout.addTab(tabLayout.newTab().setText("已使用"));
 tabLayout.addTab(tabLayout.newTab().setText("已失效"));
© www.soinside.com 2019 - 2024. All rights reserved.