ActionBar.NAVIGATION_MODE_TABS加ViewPager实现滑动


package com.dashiye.airheyuan.activity;

import java.util.ArrayList;
import java.util.List;

import org.json.JSONArray;
import org.json.JSONObject;

import android.content.Context;
import android.content.Intent;
import android.os.Bundle;
import android.support.v4.app.Fragment;
import android.support.v4.app.FragmentActivity;
import android.support.v4.app.FragmentPagerAdapter;
import android.support.v4.app.FragmentTransaction;
import android.support.v4.view.ViewPager;
import android.support.v4.view.ViewPager.OnPageChangeListener;
import android.util.Log;
import android.view.LayoutInflater;
import android.view.View;
import android.view.View.OnClickListener;
import android.view.ViewGroup;
import android.widget.AdapterView;
import android.widget.AdapterView.OnItemClickListener;
import android.widget.LinearLayout;

import com.actionbarsherlock.app.ActionBar;
import com.actionbarsherlock.app.ActionBar.Tab;
import com.actionbarsherlock.app.ActionBar.TabListener;
import com.actionbarsherlock.app.SherlockFragment;
import com.actionbarsherlock.app.SherlockFragmentActivity;
import com.dashiye.airheyuan.BaseApplication;
import com.dashiye.airheyuan.R;
import com.dashiye.airheyuan.adapter.ArticleAdapter;
import com.dashiye.airheyuan.api.Article;
import com.dashiye.airheyuan.api.impl.ArticleFunctions;
import com.dashiye.sync.http.AsyncHttpClient;
import com.dashiye.sync.http.AsyncHttpResponseHandler;
import com.dashiye.sync.http.RequestParams;
import com.dashiye.utils.CacheHelper;
import com.dashiye.widget.RefreshListView;

public class NewsActivity extends SherlockFragmentActivity {
    private static final String CACHE_TAG = "article";
    private ViewPager mViewPager;
    private ViewPagerAdapter mAdapter;
    private ActionBar mTabBar;

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        setTheme(R.style.Theme_Sherlock); // Used for theme switching in samples
        super.onCreate(savedInstanceState);
        setContentView(R.layout.layout_news);
        // initToolBar(0);
        mViewPager = (ViewPager) findViewById(R.id.viewpager);
        mTabBar = getSupportActionBar();
        mAdapter = new ViewPagerAdapter(this, mTabBar, mViewPager);

        Bundle mBundle = new Bundle();
        mBundle.putInt("category", 0);
        mAdapter.addTab(mTabBar.newTab().setText("社会"), NewsFragment.class, mBundle);
        mBundle = new Bundle();
        mBundle.putInt("category", 1);

        mAdapter.addTab(mTabBar.newTab().setText("时政"), NewsFragment.class, mBundle);
        mBundle = new Bundle();
        mBundle.putInt("category", 2);

        mAdapter.addTab(mTabBar.newTab().setText("公告"), NewsFragment.class, mBundle);

        mBundle = new Bundle();
        mBundle.putInt("category", 3);
        mAdapter.addTab(mTabBar.newTab().setText("县区"), NewsFragment.class, mBundle);

        mBundle = new Bundle();
        mBundle.putInt("category", 6);
        mAdapter.addTab(mTabBar.newTab().setText("图片"), NewsFragment.class, mBundle);

        mBundle = new Bundle();
        mBundle.putInt("category", 5);
        mAdapter.addTab(mTabBar.newTab().setText("视频"), NewsFragment.class, mBundle);

        mBundle = new Bundle();
        mBundle.putInt("category", 4);
        mAdapter.addTab(mTabBar.newTab().setText("本土"), NewsFragment.class, mBundle);
        

    }

    
    private static class ViewPagerAdapter extends FragmentPagerAdapter implements TabListener, OnPageChangeListener {

        private Context mContext;
        private ActionBar mActionBar = null;
        private ViewPager mViewPager = null;
        private ArrayList<TabInfo> mTabList = new ArrayList<TabInfo>();

        public ViewPagerAdapter(FragmentActivity activity, ActionBar actionbar, ViewPager viewPager) {
            super(activity.getSupportFragmentManager());
            mContext = activity;
            mActionBar = actionbar;
            /*
             * mActionBar.setCustomView(getCustomView(), new LayoutParams(
             * LayoutParams.WRAP_CONTENT, LayoutParams.WRAP_CONTENT));
             */
            /*
             * mActionBar.setDisplayOptions(mActionBar.getDisplayOptions() ^
             * ActionBar.DISPLAY_SHOW_HOME ^ ActionBar.DISPLAY_SHOW_TITLE,
             * ActionBar.DISPLAY_SHOW_HOME | ActionBar.DISPLAY_SHOW_TITLE);
             */
            // mActionBar.setDisplayShowHomeEnabled(false);
            // mActionBar.setNavigationMode(ActionBar.NAVIGATION_MODE_TABS);
            mViewPager = viewPager;
            mViewPager.setAdapter(this);
            mViewPager.setOnPageChangeListener(this);
        }

        /** Override OnPageChangeListener start **/
        @Override
        public void onPageScrollStateChanged(int arg0) {

        }

        @Override
        public void onPageScrolled(int position, float positionOffset, int positionOffsetPixels) {

        }

        @Override
        public void onPageSelected(int position) {
            mActionBar.setSelectedNavigationItem(position);
        }

        /** Override OnPageChangeListener end **/

        /** Override TabListener start **/
        @Override
        public void onTabSelected(Tab tab, FragmentTransaction ft) {
            Object tag = tab.getTag();
            for (int i = 0; i < mTabList.size(); i++) {
                if (mTabList.get(i) == tag) {
                    mViewPager.setCurrentItem(i);
                }
            }
        }

        @Override
        public void onTabUnselected(Tab tab, FragmentTransaction ft) {

        }

        @Override
        public void onTabReselected(Tab tab, FragmentTransaction ft) {

        }

        /** Override TabListener end **/

        /** Override FragmentPagerAdapter start **/
        @Override
        public Fragment getItem(int position) {
            TabInfo tab = mTabList.get(position);
            if (tab.fragment == null) {
                tab.fragment = Fragment.instantiate(mContext, tab.clazz.getName(), tab.bundle);
            }
            return tab.fragment;
        }

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

        public void addTab(Tab tab, Class<?> clazz, Bundle bundle) {
            TabInfo tabInfo = new TabInfo(clazz, bundle);
            tab.setTag(tabInfo);
            tab.setTabListener(this);
            mTabList.add(tabInfo);
            mActionBar.addTab(tab);
            notifyDataSetChanged();
        }

        private static final class TabInfo {
            private final Class<?> clazz;
            private final Bundle bundle;
            Fragment fragment;

            TabInfo(Class<?> clazz, Bundle bundle) {
                this.clazz = clazz;
                this.bundle = bundle;
            }
        }

    }

}

 


免责声明!

本站转载的文章为个人学习借鉴使用,本站对版权不负任何法律责任。如果侵犯了您的隐私权益,请联系本站邮箱yoyou2525@163.com删除。



 
粤ICP备18138465号  © 2018-2025 CODEPRJ.COM