viewpager和滑动下游标

Posted buled

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了viewpager和滑动下游标相关的知识,希望对你有一定的参考价值。

先看布局文件

 

<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:layout_width="fill_parent"
    android:layout_height="fill_parent"
    android:background="@color/white"
    android:orientation="vertical">

    <RelativeLayout
        android:layout_width="wrap_content"
        android:layout_height="@dimen/top_layout_height"
        android:background="@color/top_background_color"
        android:id="@+id/top_bar">

        <RelativeLayout
            android:id="@+id/select_city_Rlty"
            android:layout_width="wrap_content"
            android:layout_height="match_parent"
            android:background="@drawable/btn_red_top_selector"
            android:minWidth="62.0dip">

            <TextView
                android:id="@+id/select_city_Tv"
                android:layout_width="wrap_content"
                android:layout_height="wrap_content"
                android:layout_alignParentLeft="true"
                android:layout_centerVertical="true"
                android:layout_marginLeft="10dp"
                android:gravity="center"
                android:text="深圳"
                android:textColor="@color/white"
                android:textSize="18sp" />

            <ImageView
                android:id="@+id/icon_small_triangle_Iv"
                android:layout_width="wrap_content"
                android:layout_height="wrap_content"
                android:layout_centerVertical="true"
                android:layout_marginLeft="5dp"
                android:layout_toRightOf="@+id/select_city_Tv"
                android:src="@drawable/icon_home_city_down_arrow" />
        </RelativeLayout>

        <LinearLayout
            android:id="@+id/tab_ly"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:layout_toRightOf="@+id/select_city_Rlty"
            android:layout_toLeftOf="@+id/search_Iv"
            android:layout_centerVertical="true"
            android:layout_marginLeft="5dp">

            <TextView
                android:id="@+id/home"
                android:layout_width="0dp"
                android:layout_height="wrap_content"
                android:layout_weight="1"
                android:gravity="center"
                android:textColor="@drawable/bg_main_list_tv"
                android:textSize="18sp"
                android:padding="5dp"
                android:text="首页" />

            <View
                android:layout_width="0.5dp"
                android:layout_height="20dp"
                android:layout_gravity="center_vertical"
                android:background="@color/white" />

            <TextView
                android:id="@+id/club_card"
                android:layout_width="0dp"
                android:layout_height="wrap_content"
                android:layout_weight="1"
                android:textColor="@drawable/bg_main_list_tv"
                android:textSize="18sp"
                android:padding="5dp"
                android:gravity="center"
                android:text="会员卡" />

            <View
                android:layout_width="0.5dp"
                android:layout_height="20dp"
                android:layout_gravity="center_vertical"
                android:background="@color/white" />

            <TextView
                android:id="@+id/my"
                android:layout_width="0dp"
                android:layout_height="wrap_content"
                android:layout_weight="1"
                android:gravity="center"
                android:textColor="@drawable/bg_main_list_tv"
                android:textSize="18sp"
                android:padding="5dp"
                android:text="我的" />
        </LinearLayout>

        <ImageView  //这里就是下游标,这个宽度一定要跟tab一样宽,而且不能自适应,不然一开始初始化移动位置的时候移动不了
            android:layout_alignLeft="@+id/tab_ly"
            android:layout_alignRight="@+id/tab_ly"
            android:layout_alignParentBottom="true"
            android:id="@+id/ii_category_selector"
            android:layout_width="match_parent"
            android:layout_height="wrap_content"
            android:scaleType="matrix"
            android:src="@drawable/menu_line"
            />

        <ImageView
            android:id="@+id/search_Iv"
            android:layout_width="wrap_content"
            android:layout_height="match_parent"
            android:layout_alignParentRight="true"
            android:layout_centerVertical="true"
            android:layout_marginRight="16dp"
            android:background="@drawable/btn_red_top_selector"
            android:src="@drawable/btn_search_selector" />
    </RelativeLayout>


    <com.dld.common.view.ArcMenu
        android:id="@+id/arc_menu"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_marginBottom="72dp"
        android:layout_marginRight="8dp"
        android:visibility="gone" />-->

</LinearLayout>

2.然后看下代码,其实就是写了一个viewpeager

public class MainActivity extends BaseFragmentActivity implements OnClickListener 
    private static final String TAG = MainActivity.class.getSimpleName();
    private static final int MAXTIME = 120000;// 倒计时最大时间
    private static final int INTERVAL = 1000;// 倒计时的时间间隔

    public static int curentlay = 0;
    private long exitTime = 0;
    // 监听HOME键
    private HomeKeyEventBroadCastReceiver mHomeKeyEventBroadCastReceiver;
    private ScreenBroadCastReceiver mScreenBroadCastReceiver;
    private RecommendDialog mRecommendDialog;
    private DldDBHelper mDldDBHelper = null;
    private Dao<MovieCityData, Integer> movieCityDao;
    private List<MovieCityBean> mCityList = new ArrayList<MovieCityBean>();
    private ArrayList<HashMap<String, String>> mCityIdList = new ArrayList<HashMap<String, String>>();
    //新
    private boolean hasMeasured = false;
    private float height;
    private float width;
    private ViewPager viewPager;
    private BusinessRankAdapter pagerAdapter;
    private ArrayList<Fragment> pagers;
    private RelativeLayout select_city_Rlty;// 选择城市
    private TextView select_city_Tv;// 选择城市
    private ImageView search_Iv;// 搜索
    private ImageView selector; // 下划线
    private LinearLayout tab_ly;
    private TextView home;// 首页
    private TextView card;// 会员卡
    private TextView my; // 我的
    private RelativeLayout topbar;//头部
    private Handler hd=new Handler()
        @Override
        public void handleMessage(Message msg) 
            super.handleMessage(msg);
            initSelector();
        
    ;

    @Override
    protected void onCreate(Bundle savedInstanceState) 
        //isSlideFinish = false;
        super.onCreate(savedInstanceState);
        // requestWindowFeature(Window.FEATURE_NO_TITLE);// 设置无标题模式
        // setContentView(R.layout.activity_main_fragment_tabs); //
        // Activity样式文件,一定要写在中间
        setContentView(R.layout.activity_myfragmenttest);
        findViewById();
        init();
        setListener();
    

    @Override
    protected void findViewById() 
        topbar= (RelativeLayout) this.findViewById(R.id.top_bar);
        select_city_Rlty = (RelativeLayout) this.findViewById(R.id.select_city_Rlty);
        select_city_Tv = (TextView) this
                .findViewById(R.id.select_city_Tv);
        search_Iv = (ImageView) this.findViewById(R.id.search_Iv);
        selector = (ImageView) this.findViewById(R.id.ii_category_selector);
        tab_ly = (LinearLayout) this.findViewById(R.id.tab_ly);
        ViewTreeObserver vto = tab_ly.getViewTreeObserver();//用来获取中间tab的宽度
        vto.addOnPreDrawListener(new ViewTreeObserver.OnPreDrawListener() 
            public boolean onPreDraw() 
                if (hasMeasured == false) 
                    height = tab_ly.getMeasuredHeight();
                    width = tab_ly.getMeasuredWidth();
                    //获取到宽度和高度后,可用于计算
                    hd.sendEmptyMessage(0);
                    hasMeasured = true;
                
                return true;
            
        );
        home = (TextView) this.findViewById(R.id.home);
        home.setSelected(true);
        card = (TextView) this.findViewById(R.id.club_card);
        my = (TextView) this.findViewById(R.id.my);
        viewPager = (ViewPager) findViewById(R.id.main_vp);
        viewPager.setCurrentItem(0);


    

    /**
     * 初始化下划线位置
     */
    private void initSelector() //获取图片的宽度,和整个tab的宽度,(单个tab的宽度-图片的宽度)/2得到了向右边偏移多少才能到第一个tab的中心
        Bitmap bitmap = BitmapFactory.decodeResource(this.getResources(), R.drawable.menu_line);//获取下划线图片
        int bitmapWidth = bitmap.getWidth();
        float left = (width/ 3 - bitmapWidth) / 2;
        Matrix matrix = new Matrix();
        matrix.postTranslate(left, 0);
        selector.setImageMatrix(matrix);
    

    @Override
    protected void setListener() 
        search_Iv.setOnClickListener(this);
        select_city_Rlty.setOnClickListener(this);
        home.setOnClickListener(this);
        card.setOnClickListener(this);
        my.setOnClickListener(this);
        viewPager.setOnPageChangeListener(onPageChangeListener);
    


   

    @Override
    protected void init() 
        PushAgent.getInstance(this).onAppStart();
//        PushAgent.getInstance(this).enable(mRegisterCallback);
        PushAgent.getInstance(this).enable();
        PushAgent.getInstance(this).setPushIntentServiceClass(UmengIntentService.class);
        String device_token = UmengRegistrar.getRegistrationId(MainActivity.this);
        LogUtils.i(TAG, "device_token:" + device_token);


        if (mDldDBHelper == null) 
            mDldDBHelper = DldDBHelper.getDldDBHelper(this);
        
        try 
            movieCityDao = mDldDBHelper.getMovieCityDao();
         catch (SQLException e) 
            // TODO Auto-generated catch block
            e.printStackTrace();
        
        requestCityList();    //请求电影票模块城市列表
        IntentFilter intentFilter = new IntentFilter();
        intentFilter.addAction(ConnectivityManager.CONNECTIVITY_ACTION);
        intentFilter.setPriority(Integer.MAX_VALUE);// 设置优先级为最高.

        MobclickAgent.setDebugMode(false);
        // SDK在统计Fragment时,需要关闭Activity自带的页面统计,
        // 然后在每个页面中重新集成页面统计的代码(包括调用了 onResume 和 onPause 的Activity)。
        MobclickAgent.openActivityDurationTrack(false);
        MobclickAgent.updateOnlineConfig(this);
        initPager();


        // 监听home键广播
        mHomeKeyEventBroadCastReceiver = new HomeKeyEventBroadCastReceiver();
        registerReceiver(mHomeKeyEventBroadCastReceiver, new IntentFilter(
                Intent.ACTION_CLOSE_SYSTEM_DIALOGS));
        // 屏幕开启关闭
        mScreenBroadCastReceiver = new ScreenBroadCastReceiver();
        final IntentFilter filter = new IntentFilter();
        filter.addAction(Intent.ACTION_SCREEN_OFF);
        filter.addAction(Intent.ACTION_SCREEN_ON);
        registerReceiver(mScreenBroadCastReceiver, filter);
        SelectCityActivity.registObserver(mNotifyChangeObserver);//选择城市的监听
        processSelectCityName();
    

    /**
     * viewpager添加数据
     */
    private void initPager() 
        pagers = new ArrayList<Fragment>();
        // 首页
        HomeFragment HomeFragment = new HomeFragment();
        pagers.add(HomeFragment);
        // 会员卡
        AttractionsMiserCardFragment AttractionsMiserCardFragment = new AttractionsMiserCardFragment();
        pagers.add(AttractionsMiserCardFragment);
        // 我的
        PersonalCenterInfoFragment PersonalCenterInfoFragment = new PersonalCenterInfoFragment();
        pagers.add(PersonalCenterInfoFragment);
        pagerAdapter = new BusinessRankAdapter(getSupportFragmentManager(), pagers);
        viewPager.setAdapter(pagerAdapter);
        requestAppVersion();
    

    /**
     * viewpager滑动时间监听器
     */
    private ViewPager.OnPageChangeListener onPageChangeListener = new ViewPager.OnPageChangeListener() 

        @Override
        public void onPageSelected(int position) 
            home.setSelected(false);
            card.setSelected(false);
            my.setSelected(false);
            switch (position) 
                case 0:
                    home.setSelected(true);
                    break;
                case 1:
                    card.setSelected(true);
                    break;
                case 2:
                    my.setSelected(true);
                    break;
            
            //下划线移动
            TranslateAnimation animation = new TranslateAnimation(curentlay * width / 3, position * width / 3, 0, 0);
            animation.setFillAfter(true);
            animation.setDuration(200);
            selector.startAnimation(animation);
            curentlay = position;
        

        @Override
        public void onPageScrolled(int arg0, float arg1, int arg2) 

        

        @Override
        public void onPageScrollStateChanged(int arg0) 

        
    ;

    @Override
    public void onClick(View v) 
        switch (v.getId()) 
            case R.id.home:
                viewPager.setCurrentItem(0);
                break;
            case R.id.club_card:
                viewPager.setCurrentItem(1);
                break;
            case R.id.my:
                viewPager.setCurrentItem(3);
                break;
            case R.id.select_city_Rlty://选择城市
                Intent intent = new Intent(this, SelectCityActivity.class);
                intent.putExtra("flag", "HomeFragment");
                startActivity(intent);
                break;
            case R.id.search_Iv://搜索
                Intent intentx = new Intent(this, SearchActivity.class);
                startActivity(intentx);
                break;
        
    

    /**
     * @Description:[刷新选择的城市]
     */
    public void processSelectCityName() 
        String cityName = PreferencesUtils.getString(this,
                AppConfig.CITY_NAME);
        if (!StringUtils.isBlank(cityName)) 
            select_city_Tv.setText(cityName);
        
    

    SelectCityActivity.NotifyChangeObserver mNotifyChangeObserver = new SelectCityActivity.NotifyChangeObserver() 

        @Override
        public void onChangeCity(String cityId, String cityName) 
            LogUtils.e(TAG, "cityId:" + cityId + "    cityName:" + cityName);
            processSelectCityName();
        
    ;


    public Handler handler = new Handler();
    public IUmengRegisterCallback mRegisterCallback = new IUmengRegisterCallback() 

        @Override
        public void onRegistered(String registrationId) 
            // TODO Auto-generated method stub
            handler.post(new Runnable() 

                @Override
                public void run() 
                    // TODO Auto-generated method stub
                    updateStatus();
                
            );
        
    ;

    private void updateStatus() 
        String pkgName = getApplicationContext().getPackageName();
        String info = String.format("enabled:%s  isRegistered:%s  DeviceToken:%s",
                PushAgent.getInstance(this).isEnabled(), PushAgent.getInstance(this).isRegistered(),
                PushAgent.getInstance(this).getRegistrationId());

        LogUtils.i(TAG, "应用包名:" + pkgName + "\\n" + info + "updateStatus:" + String.format("enabled:%s  isRegistered:%s",
                PushAgent.getInstance(this).isEnabled(), PushAgent.getInstance(this).isRegistered()));
        LogUtils.i(TAG, "=============================");
    

    ;



 
    @Override
    protected void onResume() 
        super.onResume();
        LocationUtil.getInstance().start();
        LogUtils.d(TAG, "定位开启...............................");
        MobclickAgent.onPageStart(TAG);
        MobclickAgent.onResume(this);
    

    @Override
    public void onPause() 
        super.onPause();
        MobclickAgent.onPageEnd(TAG);
        MobclickAgent.onPause(this);
    

    @Override
    public boolean onKeyDown(int keyCode, KeyEvent event) 
        if (keyCode == KeyEvent.KEYCODE_BACK
                && event.getAction() == KeyEvent.ACTION_DOWN) 
//            if (mArcMenu.isShown()) 
//                mArcMenu.fold();
//                return true;
//            
            if (curentlay == 0) // 首页时候才会触发退出事件
                appExit();
             else 
                curentlay = 0;
//                currentTabByTag(curentlay);
                viewPager.setCurrentItem(curentlay);
            
            return true;
        
        return super.onKeyDown(keyCode, event);
    

  
    /**
     * @description 请求网络检查版本是否有新版本
     */
    private void requestAppVersion() 
        EncryptGetRequest req = new EncryptGetRequest(Urls.CHECK_VERSION_URL,
                new Response.Listener<JSONObject>() 

                    @Override
                    public void onResponse(JSONObject response) 
                        if (response != null) 
                            CheckVersionResBean mCheckVersionResBean = CheckVersionResBean
                                    .parse(response);
                            LogUtils.i(TAG, mCheckVersionResBean.toString());
                            processCheckVersion(mCheckVersionResBean);
                        
                    
                , new Response.ErrorListener() 

            @Override
            public void onErrorResponse(VolleyError error) 
                LogUtils.e(TAG, "VolleyError: " + error);
            
        );
        BaseApplication.getInstance().addToRequestQueue(req);
        LogUtils.i(TAG, req.getUrl());

    

    /**
     * @Description:[检查版本更新]
     */
    private void processCheckVersion(CheckVersionResBean mCheckVersionResBean) 
        // 对比当前软件的version和网站的version
        int now_version = AppInfoUtil.getVersionCode(MainActivity.this);
        String version = mCheckVersionResBean.getVersion();
        if (!StringUtils.isBlank(version)) 
            int net_version = Integer.parseInt(version);
            LogUtils.i(TAG, "net_version==" + net_version + " now_version="
                    + now_version);
            if (now_version < net_version) // 有新版本,需要升级
                PreferencesUtils.putBoolean(getApplicationContext(),
                        "isVersionUpdates", true);

//                new_version_caution_Iv.setVisibility(View.VISIBLE);
                // 出现提示对话框
                initAlertDialog(mCheckVersionResBean);
             else 

//                new_version_caution_Iv.setVisibility(View.GONE);
                PreferencesUtils.putBoolean(getApplicationContext(),
                        "isVersionUpdates", false);
            
        

    

    /**
     * @param mCheckVersionResBean
     * @Description:[弹出版本更新的提示]
     */
    private void initAlertDialog(final CheckVersionResBean mCheckVersionResBean) 
        AlertDialog dialog = new AlertDialog.Builder(this)
                .setTitle("版本更新提示")
                .setMessage(mCheckVersionResBean.getNote())
                .setPositiveButton("确定", new DialogInterface.OnClickListener() 
                    @Override
                    public void onClick(DialogInterface dialog, int which) 
                        Intent intent = new Intent();
                        intent.putExtra("url", mCheckVersionResBean.getUrl());
                        intent.setClass(MainActivity.this, UpdateService.class);
                        MainActivity.this.startService(intent);
                    
                )
                .setNegativeButton("取消", new DialogInterface.OnClickListener() 
                    @Override
                    public void onClick(DialogInterface dialog, int which) 
                    
                ).create();
        dialog.show();
    

    @Override
    protected void onStop() 
        super.onStop();
    

    // 退出程序
    private void appExit() 
        if ((System.currentTimeMillis() - exitTime) > 2000) 
            showShortToast("再按一次返回键退出程序");
            exitTime = System.currentTimeMillis();

         else 
            PreferencesUtils.putInt(getApplicationContext(), "setCurrendIndex",
                    0);
            AppManager.getAppManager().AppExit(getApplicationContext());
            finish();
            System.exit(0);
        
    

    @Override
    public void onDestroy() 
        super.onDestroy();
//        ((BitmapDrawable) blurView.getDrawable()).getBitmap().recycle();
        unregisterReceiver(mHomeKeyEventBroadCastReceiver);
        unregisterReceiver(mScreenBroadCastReceiver);
        LocationUtil.getInstance().stop();
    

    /**
     * HOME键
     */
    class HomeKeyEventBroadCastReceiver extends BroadcastReceiver 
        static final String SYSTEM_REASON = "reason";
        static final String SYSTEM_HOME_KEY = "homekey";// home key
        static final String SYSTEM_RECENT_APPS = "recentapps";// long home key

        @Override
        public void onReceive(Context context, Intent intent) 
            String action = intent.getAction();
            if (action.equals(Intent.ACTION_CLOSE_SYSTEM_DIALOGS)) 
                String reason = intent.getStringExtra(SYSTEM_REASON);
                if (reason != null) 
                    if (reason.equals(SYSTEM_HOME_KEY)) 
                        LogUtils.d(TAG, "定位关闭.............................");
                        LocationUtil.getInstance().stop();
                        LogUtils.d(TAG, "HOME键...");
                    
                
            
        
    

    /**
     * 屏幕关闭
     */
    class ScreenBroadCastReceiver extends BroadcastReceiver 

        @Override
        public void onReceive(Context context, Intent intent) 
            final String action = intent.getAction();
            if (Intent.ACTION_SCREEN_ON.equals(action)) 
                LogUtils.d(TAG, "屏幕开启...");
             else if (Intent.ACTION_SCREEN_OFF.equals(action)) 
                LogUtils.d(TAG, "定位关闭.............................");
                LocationUtil.getInstance().stop();
                LogUtils.d(TAG, "屏幕关闭...");

            
        
    

    /**
     * 检查登录状态
     *
     * @param userInfos 用户bean
     * @return true:已登录/false:未登录
     */
    private boolean checkLoginState(User userInfos) 
        if (userInfos == null
                || (userInfos != null && StringUtils
                .isBlank(userInfos.username))) 
            return false;
         else 
            return true;
        
    

    @Override
    protected void onActivityResult(int requestCode, int resultCode, Intent data) 
        super.onActivityResult(requestCode, resultCode, data);
        // 从登录界面跳转过来,开始验证是否激活了voip
//        if (requestCode == Constant.LOGIN_FOR_VOIP_REQUEST_CODE
//                && resultCode == RESULT_OK) 
//            new Handler().postDelayed(new Runnable() 
//
//                @Override
//                public void run() 
//                    mArcMenu.getOnItemClickListener().onItemClick(0);
//                
//            , 500);
//        
    


    /**
     * @Description:[请求城市列表]
     */
    public void requestCityList() 

        EncryptGetRequest req = new EncryptGetRequest(Urls.MOVIE_CITY_LIST_URL, new Response.Listener<JSONObject>() 

            @Override
            public void onResponse(JSONObject response) 
                dismissProgressDialog();
                if (response != null) 
                    MovieCityBean movieCityBean = MovieCityBean.parse(response);
                    if (movieCityBean != null) 

                        filledData(movieCityBean);

                    
                
            
        , new Response.ErrorListener() 

            @Override
            public void onErrorResponse(VolleyError error) 
                LogUtils.e(TAG, "VolleyError: " + error);

            
        );

        BaseApplication.getInstance().addToRequestQueue(req, this);
        LogUtils.i(TAG, "req.getUrl(): " + req.getUrl());
    

    private void filledData(MovieCityBean movieCityBean) 
        MovieCityBean cityBean = null;
        LinkedHashMap<String, HashMap<String, String>> citiesMap = movieCityBean.cities;
        if (citiesMap != null) 
            try 
                mDldDBHelper.cleanMovieCityDataTable();   //清空表中原有数据
             catch (SQLException e) 
                e.printStackTrace();
            
            // 添加城市
            for (Iterator iterator = citiesMap.entrySet().iterator(); iterator.hasNext(); ) 
                Map.Entry<String, HashMap<String, String>> entry = (Map.Entry<String, HashMap<String, String>>) iterator.next();
                // 添加城市ID 名字
                for (Iterator iterator2 = entry.getValue().entrySet().iterator(); iterator2.hasNext(); ) 
                    Map.Entry<String, String> entry2 = (Map.Entry<String, String>) iterator2.next();
                    cityBean = new MovieCityBean();

                    cityBean.setCityName(entry2.getValue());
                    cityBean.setCitykey(entry2.getKey());
                    if (StringUtils.isBlank(entry.getKey())) 
                        cityBean.setSortLetters("#");
                     else 
                        cityBean.setSortLetters(entry.getKey());
                    
                    try 
                        insertData(cityBean);
                     catch (SQLException e) 
                        // TODO Auto-generated catch block
                        e.printStackTrace();
                    
                
            


        

    

    private void insertData(MovieCityBean cityBean) throws SQLException 
        MovieCityData mMovieCityData = new MovieCityData();
        mMovieCityData.setCityName(cityBean.getCityName());
        mMovieCityData.setCityCode(cityBean.getCitykey());
        mMovieCityData.setSortLetters(cityBean.getSortLetters());
        mMovieCityData.setType(AppConfig.CITY_NORMAL);
        movieCityDao.create(mMovieCityData);

    


    /**
     * @Description:[显示分享弹框]
     */
    private void showShareDialog(String userId) 
        if (mRecommendDialog == null) 
            mRecommendDialog = new RecommendDialog(this, R.style.ShareDialog);
        
        if (!mRecommendDialog.isShowing()) 
            mRecommendDialog.showRequestDialog(userId, "这个软件可以查到很全的打折促销哦!", "");
        
    


这个是其中一个fragment的代码

public class AttractionsMiserCardFragment extends BaseFragment 

    private String TAG = AttractionsMiserCardActivity.class.getSimpleName();
    private Activity mActivity;
    private View layoutView;
    private ListView card_list;
    private CardListAdapter cardlistadapter;
    private String[] name = new String[]"会员卡简介", "办卡须知", "在线激活", "会员卡使用说明", "购卡电话:";
    private String[] url = new String[]"http://m.dld.com/index.php?act=cheapskate&op=instruction", "http://m.dld.com/index.php?act=cheapskate&op=characteristic", "http://card.dldpay.com/carderWeb/activateOnlineMobile.jsp", "http://m.dld.com/index.php?act=cheapskate&op=instructions","tel:400-0088-114";


    @Override
    public View onCreateView(LayoutInflater inflater, @Nullable ViewGroup container, @Nullable Bundle savedInstanceState) 
        if (layoutView == null) 
            layoutView = inflater.inflate(R.layout.activity_attractions_fragment, container, false); // 加载fragment布局
            findViewById();

            init();
            setListener();
        

        // 缓存的rootView需要判断是否已经被加过parent,
        // 如果有parent需要从parent删除,要不然会发生这个rootview已经有parent的错误。
        ViewGroup parent = (ViewGroup) layoutView.getParent();
        if (parent != null) 
            parent.removeView(layoutView);
        
        return layoutView;
    

    @Override
    public void onResume() 
        super.onResume();
        MobclickAgent.onResume(mActivity);
        MobclickAgent.onPageStart(TAG);
    

    @Override
    public void onPause() 
        super.onPause();
        MobclickAgent.onPause(mActivity);
        MobclickAgent.onPageEnd(TAG);
    

    @Override
    protected void findViewById() 
        card_list = (ListView) layoutView.findViewById(R.id.card_list);
    

    @Override
    protected void setListener() 
        card_list.setOnItemClickListener(new AdapterView.OnItemClickListener() 
            @Override
            public void onItemClick(AdapterView<?> parent, View view, int position, long id) 
                if (position!=4)
                    Intent intent = new Intent(mActivity, AttractionsMiserCardActivity.class);
                    intent.putExtra("url",url[position]);
                    if (position!=2) 
                        intent.putExtra("card", true);
                    
                    mActivity.startActivity(intent);
                else 
                    Intent intent2 = new Intent();
                    //系统默认的action,用来打开默认的电话界面
                    intent2.setAction(Intent.ACTION_DIAL);
                    intent2.setData(Uri.parse(url[position]));
                    mActivity.startActivity(intent2);
                
            
        );
    

    @Override
    protected void init() 
        cardlistadapter = new CardListAdapter(mActivity, name);
        card_list.setAdapter(cardlistadapter);
    

    private class CardListAdapter extends BaseAdapter 
        private String[] list;
        private Context mContext;

        public CardListAdapter(Context context, String[] list) 
            this.list = list;
            this.mContext = context;
        

        @Override
        public int getCount() 
            return this.list.length;
        

        @Override
        public Object getItem(int position) 
            return list[position];
        

        @Override
        public long getItemId(int position) 
            return position;
        

        @Override
        public View getView(int position, View convertView, ViewGroup parent) 
            ViewHolder viewHolder = null;
            if (convertView == null) 
                viewHolder = new ViewHolder();
                convertView = LayoutInflater.from(mContext).inflate(R.layout.item_card_fragment, null);
                viewHolder.log = (ImageView) convertView.findViewById(R.id.logo_Iv);
                viewHolder.name_Tv = (TextView) convertView.findViewById(R.id.name_tv);
                viewHolder.tel_Tv = (TextView) convertView.findViewById(R.id.tel_Tv);
                convertView.setTag(viewHolder);
             else 
                viewHolder = (ViewHolder) convertView.getTag();
            
            viewHolder.tel_Tv.setVisibility(View.GONE);
            String name = list[position];
            if (!StringUtils.isBlank(name)) 
                if (position == 4) 
                    viewHolder.tel_Tv.setVisibility(View.VISIBLE);
                 else 
                    viewHolder.name_Tv.setText(name);
                
                switch (position) 
                    case 0:
                        viewHolder.log.setImageResource(R.drawable.icon_car_1);
                        break;
                    case 1:
                        viewHolder.log.setImageResource(R.drawable.icon_car_2);
                        break;
                    case 2:
                        viewHolder.log.setImageResource(R.drawable.icon_car_3);
                        break;
                    case 3:
                        viewHolder.log.setImageResource(R.drawable.icon_car_4);
                        break;
                    case 4:
                        viewHolder.log.setImageResource(R.drawable.icon_car_5);
                        break;
                
            
            return convertView;
        

        public class ViewHolder 
            ImageView log;
            TextView name_Tv;
            TextView tel_Tv;
        
    


    @Override
    public void onAttach(Activity activity) 
        super.onAttach(activity);
        mActivity = getActivity();
        //Log.d(TAG, "onAttach");
    
最后是我们的viewpagers的adapter

public class BusinessRankAdapter extends FragmentPagerAdapter 

    private ArrayList<Fragment> pagers;



    public BusinessRankAdapter(FragmentManager fm, ArrayList<Fragment> list) 
        super(fm);
        this.pagers = list;

    

    @Override
    public int getCount() 
        return pagers.size();
    

    @Override
    public Fragment getItem(int arg0) 
        return pagers.get(arg0);
    






以上是关于viewpager和滑动下游标的主要内容,如果未能解决你的问题,请参考以下文章

如何在android中实现视图滑动

Android 解决ViewPager双层嵌套的滑动问题

Android ViewPager嵌套ViewPager滑动冲突处理方法

Android 解决ViewPager双层嵌套的滑动问题

ViewPager1嵌入ViewPager2,两者重叠,怎么禁止ViewPager1的滑动功能?

Android 禁止Viewpager左右滑动功能