实现gridview 分页,左右滑动效果

package com.eyeandroid.viewpager;
 
import java.util.ArrayList;
import java.util.List;
import java.util.concurrent.atomic.AtomicInteger;
 
import android.R.integer;
import android.app.Activity;
import android.os.Bundle;
import android.os.Handler;
import android.os.Message;
import android.os.Parcelable;
import android.support.v4.view.PagerAdapter;
import android.support.v4.view.ViewPager;
import android.support.v4.view.ViewPager.OnPageChangeListener;
import android.util.Log;
import android.view.MotionEvent;
import android.view.View;
import android.view.View.OnTouchListener;
import android.view.ViewGroup;
import android.view.ViewGroup.LayoutParams;
import android.widget.GridView;
import android.widget.ImageView;
 
public class MainActivity extends Activity {
        private ImageView[] dotImageViews = null;
        private int PAGESIZE = 8;
        private ViewPager advPager = null;
        private AtomicInteger what = new AtomicInteger(0);
        List<CourseBean> courseBeans;
        private String TAG = "MainActivity";
 
        @Override
        public void onCreate(Bundle savedInstanceState) {
                super.onCreate(savedInstanceState);
                setContentView(R.layout.main);
                courseBeans = new ArrayList<CourseBean>();
                loadData();
                initViewPager();
        }
 
        private void initViewPager() {
                advPager = (ViewPager) findViewById(R.id.adv_pager);
 
                List<View> contentGridViews = new ArrayList<View>();
 
                for (int i = 0; i < courseBeans.size() / PAGESIZE; i++) {
                        Log.e(TAG, "载入第" + i + "页");
                        // 其实每一页就是一个gridview
                        GridView gridView = new GridView(this);
   // 分页算法 不懂请自觉补习小学三年级算法
int start = i * PAGESIZE;
                        int end = i * PAGESIZE + PAGESIZE;
                        end = end > courseBeans.size() ? courseBeans.size() : end;
                        gridView.setAdapter(new CourseAdapter(courseBeans.subList(start,
                                        end), this));
                      
                        
                        gridView.setNumColumns(4);
 
                        contentGridViews.add(gridView);
                }
 
                dotImageViews = new ImageView[contentGridViews.size()];
                initDots();
                advPager.setAdapter(new PageAdapter(contentGridViews));
                advPager.setOnPageChangeListener(new GuidePageChangeListener());
 
        }
 
        /**
         * 获取数据逻辑
         */
        private void loadData() {
                // 胡乱填写的数据
                for (int i = 0; i < 30; i++) {
                        CourseBean courseBean = new CourseBean(i, i + "这是课程"
                                        + Math.random());
                        courseBeans.add(courseBean);
                }
        }
 
        /**
         * 初始化指示器
         */
        private void initDots() {
                ViewGroup group = (ViewGroup) findViewById(R.id.viewGroup);
                for (int i = 0; i < dotImageViews.length; i++) {
                        ImageView imageView = new ImageView(this);
                        imageView.setLayoutParams(new LayoutParams(20, 20));
                        imageView.setPadding(5, 5, 5, 5);
                        dotImageViews<i> = imageView;
                        if (i == 0) {
                                dotImageViews<i>
                                                .setBackgroundResource(R.drawable.banner_dian_focus);
                        } else {
                                dotImageViews<i>
                                                .setBackgroundResource(R.drawable.banner_dian_blur);
                        }
                        group.addView(dotImageViews<i>);
                }
 
        }
 
        /**
         * 设置页面指示器
         * 
         */
        private final class GuidePageChangeListener implements OnPageChangeListener {
 
                @Override
                public void onPageScrolled(int arg0, float arg1, int arg2) {
 
                }
 
                @Override
                public void onPageSelected(int arg0) {
                        what.getAndSet(arg0);
                        for (int i = 0; i < dotImageViews.length; i++) {
                                dotImageViews[arg0]
                                                .setBackgroundResource(R.drawable.banner_dian_focus);
                                if (arg0 != i) {
                                        dotImageViews<i>
                                                        .setBackgroundResource(R.drawable.banner_dian_blur);
                                }
                        }
 
                }
 
                @Override
                public void onPageScrollStateChanged(int arg0) {
 
                }
 
        }
 
}
package com.eyeandroid.viewpager;
 
import android.R.integer;
 
public class CourseBean {
         public int id;
         public String courseName;
 
         public CourseBean( int id, String courseName) {
                super ();
                this .id = id;
                this .courseName = courseName;
         }
 
         public int getId() {
                return id;
         }
 
         public void setId( int id) {
                this .id = id;
         }
 
         public String getCourseName() {
                return courseName;
         }
 
         public void setCourseName(String courseName) {
                this .courseName = courseName;
         }
 
}

package com.eyeandroid.viewpager;
 
import java.util.List;
 
import android.content.Context;
import android.view.View;
import android.view.ViewGroup;
import android.widget.BaseAdapter;
import android.widget.TextView;
 
public class CourseAdapter extends BaseAdapter {
         private List<CourseBean> courseBeans;
         private Context context;
 
         public CourseAdapter(List<CourseBean> courseBeans, Context context) {
                super ();
                this .courseBeans = courseBeans;
                this .context = context;
         }
 
         @Override
         public int getCount() {
                // TODO Auto-generated method stub
                return courseBeans.size();
         }
 
         @Override
         public Object getItem( int position) {
                // TODO Auto-generated method stub
                return courseBeans.get(position);
         }
 
         @Override
         public long getItemId( int position) {
                // TODO Auto-generated method stub
                return position;
         }
 
         @Override
         public View getView( int position, View convertView, ViewGroup parent) {
 
                TextView textView2 = new TextView(context);
                textView2.setText(courseBeans.get(position).getCourseName());
                return textView2;
         }
 
}
package com.eyeandroid.viewpager;
 
import java.util.List;
 
import android.os.Parcelable;
import android.support.v4.view.PagerAdapter;
import android.support.v4.view.ViewPager;
import android.view.View;
 
public class PageAdapter extends PagerAdapter {
         private List<View> views = null ;
 
         public PageAdapter(List<View> views) {
                this .views = views;
         }
 
         @Override
         public void destroyItem(View arg0, int arg1, Object arg2) {
                ((ViewPager) arg0).removeView(views.get(arg1));
         }
 
         @Override
         public void finishUpdate(View arg0) {
 
         }
 
         @Override
         public int getCount() {
                return views.size();
         }
 
         @Override
         public Object instantiateItem(View arg0, int arg1) {
                ((ViewPager) arg0).addView(views.get(arg1), 0 );
                return views.get(arg1);
         }
 
         @Override
         public boolean isViewFromObject(View arg0, Object arg1) {
                return arg0 == arg1;
         }
 
         @Override
         public void restoreState(Parcelable arg0, ClassLoader arg1) {
 
         }
 
         @Override
         public Parcelable saveState() {
                return null ;
         }
 
         @Override
         public void startUpdate(View arg0) {
 
         }
 
}



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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值