Android_viewpager无线+自动轮播

public class MainActivity extends AppCompatActivity {

    private ViewPager viewpager;
    private RadioGroup rg;
    List<Bean02> list = new ArrayList<>();
    int[] i = {R.id.b1,R.id.b2,R.id.b3,R.id.b4,R.id.b5,R.id.b6};

    //Handler实现自动轮播
    Handler handler = new Handler(){
        @Override
        public void handleMessage(Message msg) {
            super.handleMessage(msg);
            int i = viewpager.getCurrentItem()+1;
            viewpager.setCurrentItem(i);
            handler.sendEmptyMessageDelayed(0,2000);
        }
    };
    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);
        //获取id
        rg = (RadioGroup)findViewById(R.id.rg);
        viewpager =(ViewPager)findViewById(R.id.viewpager);
        //异步请求网络
        new Myasynctask().execute("https://api.tianapi.com/wxnew/?key=8d6e3228d25298f13af4fc40ce6c9679&num=6&page=1");

        //Timer实现自动轮播
//        Timer timer = new Timer();
//        timer.schedule(new TimerTask() {
//            @Override
//            public void run() {
//                MainActivity.this.runOnUiThread(new Runnable() {
//                    @Override
//                    public void run() {
//                        int i = viewpager.getCurrentItem()+1;
//                        viewpager.setCurrentItem(i);
//                        //非无线轮播需要加判断,如果不加会报错
//                        //if(i>=list.size()){
//                        //   viewpager.setCurrentItem(0);
//                  //}
//                    }
//                });
//            }
//        },2000,2000);
    }
    //异步请求网络
    class Myasynctask extends AsyncTask<String,Void,String>{
        private StringBuilder builder;
        @Override
        protected String doInBackground(String... strings) {
            try {
                URL url = new URL(strings[0]);
                HttpURLConnection urlConnection = (HttpURLConnection) url.openConnection();
                int code = urlConnection.getResponseCode();
                if(code==200){
                    InputStream inputStream = urlConnection.getInputStream();
                    BufferedReader reader = new BufferedReader(new InputStreamReader(inputStream));
                    builder = new StringBuilder();
                    String s = "";
                    while((s=reader.readLine())!=null){
                        builder.append(s);
                    }
                }
            } catch (Exception e) {
                e.printStackTrace();
            }
            return builder.toString();
        }
        @Override
        protected void onPostExecute(String s) {
            super.onPostExecute(s);
            //解析
            Gson gson = new Gson();
            Bean bean = gson.fromJson(s, Bean.class);
            //获取解析数据
            List<Bean.NewslistBean> newslist = bean.getNewslist();
            //添加到集合中
            for (int i=0;i<newslist.size();i++){
                list.add(new Bean02(newslist.get(i).getPicUrl(),newslist.get(i).getTitle()));
            }
            //给viewpager设置适配器
            viewpager.setAdapter(new Mydapter());
            viewpager.setCurrentItem(10000*list.size());//无线轮播加这行代码
            handler.sendEmptyMessageDelayed(0,2000);//handler实现自动轮播,需要这行代码开启
            viewpager.addOnPageChangeListener(new ViewPager.OnPageChangeListener() {
                @Override
                public void onPageScrolled(int position, float positionOffset, int positionOffsetPixels) {
                    rg.check(i[position%list.size()]);//无线轮播
                    //rg.check(i[position]);//普通
                }
                @Override
                public void onPageSelected(int position) {

                }
                @Override
                public void onPageScrollStateChanged(int state) {

                }
            });
        }
    }
    class Mydapter extends PagerAdapter{
        @Override
        public int getCount() {
            //return list.size();//普通
            return Integer.MAX_VALUE;//无线轮播
        }
        @Override
        public boolean isViewFromObject(View view, Object object) {
            return view==object;
        }
        @Override
        public Object instantiateItem(ViewGroup container, int position) {
            View view = View.inflate(MainActivity.this,R.layout.vp,null);
            ImageView imageview = (ImageView)view.findViewById(R.id.imageview);
            TextView textview = (TextView)view.findViewById(R.id.textview);
            //无线轮播,非无线轮播position后面的"%list.size()"去掉
            textview.setText(list.get(position%list.size()).getTitle());
            ImageLoader.getInstance().displayImage(list.get(position%list.size()).getPicurl(),imageview);
            container.addView(view);
            return view;
        }
        @Override
        public void destroyItem(ViewGroup container, int position, Object object) {
            container.removeView((View) object);
        }
    }
}
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值