安卓app订单状态切换查询订单信息,可以通过TableLayout+ViewPager2+Fragemnt实现,点击或滑动即可切换条件查询不同的状态的订单。首先布局界面,代码如下:
- <!--需要在gradle中添加 implementation "com.google.
- android.material:material:1.1.0"
- 订单状态切换tab
- -->
- <com.google.android.material.tabs.TabLayout
- android:id="@+id/tl_indent_title"
- android:layout_width="match_parent"
- android:layout_height="50dp"
- app:tabGravity="fill"
- app:tabIndicatorColor="@color/colorPrimary"
- app:tabMode="fixed"
- app:tabSelectedTextColor="@color/colorPrimary"
- app:tabTextColor="@color/colorBlack" />
- <!--需要在gradle中添加 implementation 'androidx.viewpager2:viewpager2:1.0.0'
- 切换订单内容容器
- -->
- <androidx.viewpager2.widget.ViewPager2
- android:id="@+id/vp_indent_container"
- android:layout_width="match_parent"
- android:layout_height="match_parent"
- android:orientation="horizontal" />
再新建一个适配器,然后实例化TableLayout+ViewPager2+Fragemnt,如下:
- public class IndentActivity extends AppCompatActivity {
- private Activity myActivityContext;//自定义上下文
- //参数
- private String[] title = {"全部", "待付款", "待配送", "待收货", "待评价"};
- private int[] orderStatusIds = {0, 8, 9, 4, 5};
- @Override
- protected void onCreate(@Nullable Bundle savedInstanceState) {
- super.onCreate(savedInstanceState);
- myActivityContext = this;//获取上下文
- //设置布局
- setContentView(R.layout.activity_indent);
- //获取控件
- TabLayout tlTitle = findViewById(R.id.tl_indent_title);//标题切换控件
- ViewPager2 vpContainer = findViewById(R.id.vp_indent_container);//内容切换控件
- //=========TableLayout+ViewPager2+Fragemnt初始化=============
- //=实例化适配器
- MyFragmentStateAdapter myFragmentStateAdapter = new MyFragmentStateAdapter(this);
- //=2、给ViewPager2设置适配器
- vpContainer.setAdapter(myFragmentStateAdapter);
- //=3、设置ViewPager2的预加载数,传入大于1的值来设置预加载数量,默认不预加载
- vpContainer.setOffscreenPageLimit(1);
- //=4、TabLayout与ViewPager2关联
- new TabLayoutMediator(tlTitle, vpContainer, new TabLayoutMediator.TabConfigurationStrategy() {
- @Override
- public void onConfigureTab(@NonNull TabLayout.Tab tab, int position) {
- //设置TabLayout的显示
- //tab:当前处于选中状态的Tab对象
- //position:当前Tab所处的位置
- tab.setText(title[position]);
- }
- }).attach();//!!!注意:不要忘记.attach(),否则配置无效
- }
- /**
- * FragmentState内部类适配器
- */
- class MyFragmentStateAdapter extends FragmentStateAdapter {
- //存放Fragment
- Fragment[] fragments;
- public MyFragmentStateAdapter(@NonNull FragmentActivity fragmentActivity) {
- super(fragmentActivity);
- fragments = new Fragment[title.length];
- }
- /**
- * 创建Fragment
- *
- * @param position 索引
- * @return
- */
- @NonNull
- @Override
- public Fragment createFragment(int position) {
- if (fragments[position] == null) {
- //创建传递参数的Bundle
- Bundle bundle = new Bundle();
- bundle.putInt("orderStatusId", orderStatusIds[position]);
- //创建Fragment
- IndentListFragment indentListFragment = new IndentListFragment();
- //设置参数
- indentListFragment.setArguments(bundle);
- fragments[position] = indentListFragment;
- }
- return fragments[position];
- }
- @Override
- public int getItemCount() {
- return fragments.length;
- }
- }
- }
运行效果如下图: