TableLayout+ViewPager2+Fragment实现切换查询

安卓app订单状态切换查询订单信息,可以通过TableLayout+ViewPager2+Fragemnt实现,点击或滑动即可切换条件查询不同的状态的订单。首先布局界面,代码如下:

  1.  <!--需要在gradle中添加 implementation "com.google.  
  2.     android.material:material:1.1.0"  
  3.     订单状态切换tab  
  4. -->  
  5. <com.google.android.material.tabs.TabLayout  
  6.     android:id="@+id/tl_indent_title"  
  7.     android:layout_width="match_parent"  
  8.     android:layout_height="50dp"  
  9.     app:tabGravity="fill"  
  10.     app:tabIndicatorColor="@color/colorPrimary"  
  11.     app:tabMode="fixed"  
  12.     app:tabSelectedTextColor="@color/colorPrimary"  
  13.     app:tabTextColor="@color/colorBlack" />  
  14.   
  15. <!--需要在gradle中添加 implementation 'androidx.viewpager2:viewpager2:1.0.0'  
  16.     切换订单内容容器  
  17. -->  
  18. <androidx.viewpager2.widget.ViewPager2  
  19.     android:id="@+id/vp_indent_container"  
  20.     android:layout_width="match_parent"  
  21.     android:layout_height="match_parent"  
  22.     android:orientation="horizontal" /> 

再新建一个适配器,然后实例化TableLayout+ViewPager2+Fragemnt,如下:

  1. public class IndentActivity extends AppCompatActivity {    
  2.     private Activity myActivityContext;//自定义上下文    
  3.     //参数  
  4.     private String[] title = {"全部""待付款""待配送""待收货""待评价"};  
  5.     private int[] orderStatusIds = {08945};    
  6.     @Override  
  7.     protected void onCreate(@Nullable Bundle savedInstanceState) {  
  8.         super.onCreate(savedInstanceState);  
  9.         myActivityContext = this;//获取上下文    
  10.         //设置布局  
  11.         setContentView(R.layout.activity_indent);    
  12.         //获取控件  
  13.         TabLayout tlTitle = findViewById(R.id.tl_indent_title);//标题切换控件  
  14.         ViewPager2 vpContainer = findViewById(R.id.vp_indent_container);//内容切换控件    
  15.         //=========TableLayout+ViewPager2+Fragemnt初始化=============  
  16.         //=实例化适配器  
  17.         MyFragmentStateAdapter myFragmentStateAdapter = new MyFragmentStateAdapter(this);  
  18.         //=2、给ViewPager2设置适配器  
  19.         vpContainer.setAdapter(myFragmentStateAdapter);  
  20.         //=3、设置ViewPager2的预加载数,传入大于1的值来设置预加载数量,默认不预加载  
  21.         vpContainer.setOffscreenPageLimit(1);  
  22.         //=4TabLayoutViewPager2关联  
  23.         new TabLayoutMediator(tlTitle, vpContainer, new TabLayoutMediator.TabConfigurationStrategy() {  
  24.             @Override  
  25.             public void onConfigureTab(@NonNull TabLayout.Tab tab, int position) {  
  26.                 //设置TabLayout的显示  
  27.                 //tab:当前处于选中状态的Tab对象  
  28.                 //position:当前Tab所处的位置  
  29.                 tab.setText(title[position]);  
  30.             }  
  31.         }).attach();//!!!注意:不要忘记.attach(),否则配置无效  
  32.     }    
  33.     /** 
  34.      * FragmentState内部类适配器 
  35.      */  
  36.     class MyFragmentStateAdapter extends FragmentStateAdapter {   
  37.         //存放Fragment  
  38.         Fragment[] fragments;    
  39.  
  40.         public MyFragmentStateAdapter(@NonNull FragmentActivity fragmentActivity) {  
  41.             super(fragmentActivity);  
  42.             fragments = new Fragment[title.length];  
  43.         }  
  44.   
  45.         /** 
  46.          * 创建Fragment 
  47.          * 
  48.          * @param position 索引 
  49.          * @return 
  50.          */  
  51.         @NonNull  
  52.         @Override  
  53.         public Fragment createFragment(int position) {  
  54.             if (fragments[position] == null) {  
  55.                 //创建传递参数的Bundle  
  56.                 Bundle bundle = new Bundle();  
  57.                 bundle.putInt("orderStatusId", orderStatusIds[position]);  
  58.                 //创建Fragment  
  59.                 IndentListFragment indentListFragment = new IndentListFragment();  
  60.                 //设置参数  
  61.                 indentListFragment.setArguments(bundle);  
  62.                 fragments[position] = indentListFragment;  
  63.             }  
  64.             return fragments[position];  
  65.         }   
  66.         @Override  
  67.         public int getItemCount() {  
  68.             return fragments.length;  
  69.         }  
  70.     }  
  71. }  

运行效果如下图:

 

 

  • 0
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值