MainFragment

本文介绍了一个使用TabLayout和ViewPager实现导航切换的应用案例。通过创建自定义适配器MPagerAdapter,实现了三个子Fragment的加载,并为每个标签页设定了对应的标题。此案例适用于Android应用开发者了解如何整合TabLayout与ViewPager组件。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

package com.bwie.zhoukao2demo.fragment;


import android.os.Bundle;
import android.support.annotation.Nullable;
import android.support.design.widget.TabLayout;
import android.support.v4.app.Fragment;
import android.support.v4.app.FragmentManager;
import android.support.v4.app.FragmentPagerAdapter;
import android.support.v4.view.ViewPager;
import android.view.LayoutInflater;
import android.view.View;
import android.view.ViewGroup;


import com.bwie.zhoukao2demo.R;


import java.util.ArrayList;


/**
 * author:Created by WangZhiQiang on 2017-10-19.
 * 1--Tablayout
 * *viewpager里三个子fragment(一个里面有数据)
 */


public class MainFragment extends Fragment {




    private TabLayout tabLayout;
    private ViewPager viewpager;
    ArrayList fragmentList = new ArrayList<Fragment>();
    String[] temp = {"你的 ","我的","他的"};




    @Nullable
    @Override
    public View onCreateView(LayoutInflater inflater, @Nullable ViewGroup container, @Nullable Bundle savedInstanceState) {
        View view = inflater.inflate(R.layout.fragment_a, null);
        tabLayout = (TabLayout) view.findViewById(R.id.tl_titles);
        viewpager = (ViewPager) view.findViewById(R.id.viewpager);
        return view;


    }


    @Override
    public void onViewCreated(View view, @Nullable Bundle savedInstanceState) {
        super.onViewCreated(view, savedInstanceState);
        // fragment中嵌套fragment, Manager需要用(getChildFragmentManager())
        MPagerAdapter mPagerAdapter = new MPagerAdapter(getChildFragmentManager());
        initFragment();
        tabLayout.setTabMode(TabLayout.MODE_FIXED);
        tabLayout.setupWithViewPager(viewpager);
        viewpager.setAdapter(mPagerAdapter);
    }


    private void initFragment() {
        for (int i = 0; i < 3; i++) {
            fragmentList.add(new ChildFragment());
        }


    }




    class MPagerAdapter extends FragmentPagerAdapter {




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


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


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


        @Override
        public Object instantiateItem(ViewGroup container, int position) {
            return super.instantiateItem(container, position);
        }


        //返回tablayout的标题文字;
        @Override
        public CharSequence getPageTitle(int position) {
            return temp[position];
        }
    }
}
package com.nxg.app.main import android.annotation.SuppressLint import androidx.lifecycle.ViewModelProvider import android.os.Bundle import androidx.fragment.app.Fragment import android.view.LayoutInflater import android.view.View import android.view.ViewGroup import androidx.lifecycle.Observer import androidx.recyclerview.widget.LinearLayoutManager import androidx.recyclerview.widget.RecyclerView import com.nxg.app.R import com.nxg.app.databinding.MainFragmentBinding import com.nxg.loopscrollanimation.RecyclerViewLoopScrollAnimation import com.nxg.loopscrollanimation.RecyclerViewScrollAction import com.nxg.loopscrollanimation.utils.LogUtil class MainFragment : Fragment() { companion object { fun newInstance() = MainFragment() } private lateinit var viewModel: MainViewModel private var _binding: MainFragmentBinding? = null // This property is only valid between onCreateView and // onDestroyView. private val binding get() = _binding!! private val doubleColorBallDataA = mutableListOf<List<TextBean>>() private val doubleColorBallDataB = mutableListOf<List<TextBean>>() private val doubleColorBallDataC = mutableListOf<List<TextBean>>() private val doubleColorBallDataD = mutableListOf<List<TextBean>>() private val doubleColorBallDataE = mutableListOf<List<TextBean>>() @SuppressLint("NotifyDataSetChanged") override fun onCreateView( inflater: LayoutInflater, container: ViewGroup?, savedInstanceState: Bundle? ): View? { viewModel = ViewModelProvider.AndroidViewModelFactory.getInstance(AppApplication.instance()) .create(MainViewModel::class.java) _binding = MainFragmentBinding.inflate(inflater, container, false) val root: View = binding.root val doubleColorBallRecyclerViewA = binding.doubleColorBallRecyclerViewA val doubleColorBallRecyclerViewB = binding.doubleColorBallRecyclerViewB val doubleColorBallRecyclerViewC = binding.doubleColorBallRecyclerViewC val doubleColorBallRecyclerViewD = binding.doubleColorBallRecyclerViewD val doubleColorBallRecyclerViewE = binding.doubleColorBallRecyclerViewE val doubleColorBallAdapterA = DoubleColorBallAdapter( requireContext(), R.layout.double_color_ball_item, doubleColorBallDataA ) val doubleColorBallAdapterB = DoubleColorBallAdapter( requireContext(), R.layout.double_color_ball_item, doubleColorBallDataB ) val doubleColorBallAdapterC = DoubleColorBallAdapter( requireContext(), R.layout.double_color_ball_item, doubleColorBallDataC ) val doubleColorBallAdapterD = DoubleColorBallAdapter( requireContext(), R.layout.double_color_ball_item, doubleColorBallDataD ) val doubleColorBallAdapterE = DoubleColorBallAdapter( requireContext(), R.layout.double_color_ball_item, doubleColorBallDataE ) doubleColorBallRecyclerViewA.layoutManager = LinearLayoutManager(requireContext(), RecyclerView.HORIZONTAL, false) doubleColorBallRecyclerViewA.adapter = doubleColorBallAdapterA doubleColorBallRecyclerViewA.addItemDecoration(DoubleColorBallItemDecoration(20)) doubleColorBallRecyclerViewB.layoutManager = LinearLayoutManager(requireContext(), RecyclerView.HORIZONTAL, false) doubleColorBallRecyclerViewB.adapter = doubleColorBallAdapterB doubleColorBallRecyclerViewB.addItemDecoration(DoubleColorBallItemDecoration(20)) doubleColorBallRecyclerViewC.layoutManager = LinearLayoutManager(requireContext(), RecyclerView.HORIZONTAL, false) doubleColorBallRecyclerViewC.adapter = doubleColorBallAdapterC doubleColorBallRecyclerViewC.addItemDecoration(DoubleColorBallItemDecoration(20)) doubleColorBallRecyclerViewD.layoutManager = LinearLayoutManager(requireContext(), RecyclerView.HORIZONTAL, false) doubleColorBallRecyclerViewD.adapter = doubleColorBallAdapterD doubleColorBallRecyclerViewD.addItemDecoration(DoubleColorBallItemDecoration(20)) doubleColorBallRecyclerViewE.layoutManager = LinearLayoutManager(requireContext(), RecyclerView.HORIZONTAL, false) doubleColorBallRecyclerViewE.adapter = doubleColorBallAdapterE doubleColorBallRecyclerViewE.addItemDecoration(DoubleColorBallItemDecoration(20)) viewModel.doubleColorBallNum.observe(viewLifecycleOwner, { doubleColorBallDataA.clear() doubleColorBallDataA.addAll(it) doubleColorBallDataA.shuffle() doubleColorBallDataB.clear() doubleColorBallDataB.addAll(it) doubleColorBallDataB.shuffle() doubleColorBallDataC.clear() doubleColorBallDataC.addAll(it) doubleColorBallDataC.shuffle() doubleColorBallDataD.clear() doubleColorBallDataD.addAll(it) doubleColorBallDataD.shuffle() doubleColorBallDataE.clear() doubleColorBallDataE.addAll(it) doubleColorBallDataE.shuffle() doubleColorBallAdapterA.notifyDataSetChanged() doubleColorBallAdapterB.notifyDataSetChanged() doubleColorBallAdapterC.notifyDataSetChanged() doubleColorBallAdapterD.notifyDataSetChanged() doubleColorBallAdapterE.notifyDataSetChanged() }) binding.doubleColorBallLottery.setOnClickListener { //开始摇号,遍历每一个RecyclerView调用RecyclerViewLoopScrollAnimation.start() val ballsA = viewModel.createSevenDoubleColorBall() LogUtil.i("MainFragment", "ballsA $ballsA") doubleColorBallAdapterA.fakeResult.clear() doubleColorBallAdapterA.fakeResult.addAll(ballsA) for ((index, _) in doubleColorBallDataA.withIndex()) { val viewHolder = doubleColorBallRecyclerViewA.findViewHolderForLayoutPosition(index) as DoubleColorBallAdapter.DoubleColorBallViewHolder viewHolder.recyclerViewLoopScrollAnimation.start(0L) } val ballsB = viewModel.createSevenDoubleColorBall() LogUtil.i("MainFragment", "ballsB $ballsB") doubleColorBallAdapterB.fakeResult.clear() doubleColorBallAdapterB.fakeResult.addAll(ballsB) for ((index, _) in doubleColorBallDataB.withIndex()) { val viewHolder = doubleColorBallRecyclerViewB.findViewHolderForLayoutPosition(index) as DoubleColorBallAdapter.DoubleColorBallViewHolder viewHolder.recyclerViewLoopScrollAnimation.start(100L) } val ballsC = viewModel.createSevenDoubleColorBall() LogUtil.i("MainFragment", "ballsC $ballsC") doubleColorBallAdapterC.fakeResult.clear() doubleColorBallAdapterC.fakeResult.addAll(ballsC) for ((index, _) in doubleColorBallDataC.withIndex()) { val viewHolder = doubleColorBallRecyclerViewC.findViewHolderForLayoutPosition(index) as DoubleColorBallAdapter.DoubleColorBallViewHolder viewHolder.recyclerViewLoopScrollAnimation.start(200L) } val ballsD = viewModel.createSevenDoubleColorBall() LogUtil.i("MainFragment", "ballsD $ballsD") doubleColorBallAdapterD.fakeResult.clear() doubleColorBallAdapterD.fakeResult.addAll(ballsD) for ((index, _) in doubleColorBallDataD.withIndex()) { val viewHolder = doubleColorBallRecyclerViewD.findViewHolderForLayoutPosition(index) as DoubleColorBallAdapter.DoubleColorBallViewHolder viewHolder.recyclerViewLoopScrollAnimation.start(300L) } val ballsE = viewModel.createSevenDoubleColorBall() LogUtil.i("MainFragment", "ballsE $ballsE") doubleColorBallAdapterE.fakeResult.clear() doubleColorBallAdapterE.fakeResult.addAll(ballsE) for ((index, _) in doubleColorBallDataE.withIndex()) { val viewHolder = doubleColorBallRecyclerViewE.findViewHolderForLayoutPosition(index) as DoubleColorBallAdapter.DoubleColorBallViewHolder viewHolder.recyclerViewLoopScrollAnimation.start(400L) } } viewModel.appInfo.observe(viewLifecycleOwner, { binding.appInfo.text = it }) viewModel.refreshDoubleColorBallNum() return root } } 转成Android Java
最新发布
06-18
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值