• Android:Fragment+ViewPager实现Tab滑动


    public class FragAdapter extends FragmentPagerAdapter {
        
        private List<Fragment> fragments ;
    
        public FragAdapter(FragmentManager fm){
            super(fm);
        }
        
        public FragAdapter(FragmentManager fm,List<Fragment> fragments) {
            super(fm);
            this.fragments = fragments;
        }
    
        @Override
        public Fragment getItem(int position) {
            return fragments.get(position);
        }
    
        @Override
        public int getCount() {
            return fragments.size();
        }
    
        /**
         * add the fragment to the special position
         * @param location the position be added to.
         * @param fragment
         */
        public void addFragment(int location,Fragment fragment){
            this.fragments.add(location, fragment);
            this.notifyDataSetChanged();
        }
        /**
         * add the fragment to the default position.the end of the list.
         * @param fragment
         */
        public void addFragment(Fragment fragment){
            this.fragments.add(fragment);
            this.notifyDataSetChanged();
        }
    }

    MyFragment.java:

    public class MyFragment extends Fragment {
    
        private static final String TEXT_CHAT = "CHAT";
        
    
        /**
         * Factory method to generate a new instance of the fragment given a string .
         *
         * @param char 主页面要传过来的信息
         * @return A new instance of MyFragment with chat extras
         */
        public static MyFragment newInstance(String chat) {
            final MyFragment f = new MyFragment();
    
            final Bundle args = new Bundle();
            args.putString(TEXT_CHAT, chat);
            f.setArguments(args);
            return f;
        }
    
        @Override
        public void onCreate(Bundle savedInstanceState) {
            super.onCreate(savedInstanceState);
        }
    
        @Override
        public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) {
            View view = inflater.inflate(R.layout.myfragment, container, false);
            TextView tv = (TextView) view.findViewById(R.id.tv_fragment_text);
            String str = getArguments() != null ? getArguments().getString(TEXT_CHAT) : null;
            if(str != null){
                tv.setText(str);
            }else{
                tv.setText("获取字段出错了,求指导");
            }
            return view;
        }
    
        @Override
        public void onActivityCreated(Bundle savedInstanceState) {
            super.onActivityCreated(savedInstanceState);
        }
    
    }

    MainActivity.java:

    public class MainActivity extends FragmentActivity implements OnClickListener {
    
        private ViewPager vp;
        private TextView tv_no1;
        private TextView tv_no2;
    
        private FragAdapter adapter;
    
        @Override
        protected void onCreate(Bundle savedInstanceState) {
            super.onCreate(savedInstanceState);
            setContentView(R.layout.activity_main);
            vp = (ViewPager) findViewById(R.id.vp_main);
            tv_no1 = (TextView) findViewById(R.id.tv_no1);
            tv_no2 = (TextView) findViewById(R.id.tv_no2);
    
            tv_no1.setOnClickListener(this);
            tv_no2.setOnClickListener(this);
    
            initViewPage();
        }
    
        /**
         * 初始化 view page的相关数据
         */
        private void initViewPage() {
    
            List<Fragment> fragments = new ArrayList<Fragment>();
            fragments.add(MyFragment.newInstance("我是第一个界面,看到我,看到我"));
            fragments.add(MyFragment.newInstance("我是第二个界面,看到我,看到我"));
    
            adapter = new FragAdapter(getSupportFragmentManager(), fragments);
            vp.setAdapter(adapter);
            vp.setCurrentItem(0);
            changeTextColor(0);
            vp.setOnPageChangeListener(new MyVPageChangeListener());
    
        }
    
        @Override
        public boolean onCreateOptionsMenu(Menu menu) {
            // Inflate the menu; this adds items to the action bar if it is present.
            getMenuInflater().inflate(R.menu.activity_main, menu);
            return true;
        }
    
        private class MyVPageChangeListener implements OnPageChangeListener {
    
            @Override
            public void onPageScrollStateChanged(int arg0) {
                // TODO Auto-generated method stub
    
            }
    
            @Override
            public void onPageScrolled(int arg0, float arg1, int arg2) {
                // TODO Auto-generated method stub
    
            }
    
            @Override
            public void onPageSelected(int location) {
                changeTextColor(location);
            }
    
        }
    
        /**
         * 设置下面文本的颜色。
         * @param location
         */
        private void changeTextColor(int location) {
            switch (location) {
            case 0:
                tv_no1.setTextColor(Color.RED);
                tv_no2.setTextColor(Color.CYAN);
                break;
            case 1:
                tv_no2.setTextColor(Color.RED);
                tv_no1.setTextColor(Color.CYAN);
                break;
            default:
                break;
            }
        }
    
        @Override
        public void onClick(View v) {
            switch (v.getId()) {
            case R.id.tv_no1:
                vp.setCurrentItem(0);
                break;
            case R.id.tv_no2:
                vp.setCurrentItem(1);
                break;
            default:
                break;
            }
        }
    
    }

    FragAdapter.java:

  • 相关阅读:
    ASP.NET MVC与RAILS3的比较
    ASP.NET状态管理详解,让你明明白白
    Javascript在页面加载时的执行顺序【转】
    ASP.NET登录控件延伸(个性化)
    ASP.NET中读取excel内容并显示
    javascript 最常用的技巧整理
    ASP.NET用户控件事件的定义和实践
    百度 WebUploader 分片上传
    前端 WebUploader 分片上传
    vue WebUploader 分片上传
  • 原文地址:https://www.cnblogs.com/gongcb/p/3334308.html
Copyright © 2020-2023  润新知