Android开发之ViewPager

Android开发之ViewPager

            最近公司的的一款应用有一个做图片轮播并且点击的效果,图片轮播的功能比较好实现,我们只要开启一个线程,使用Thread和Handle实现,采用取余数的方法就可以实现,但在这里说明开启线程的时候,我们一般不会一直让线程做操作,我们需要做一个标志,而不是直接使用线程的stop方法(这个方法已经停止使用了),做线程轮播就说这么多,那对于ViewPager的item做点击监听却没有类似ListView这样的方法提供给我们使用,相信以后会有的,那现在应该怎么做呢?
       百度了很多相关的资料,但实现不了,这里我给出了自己的思路,在做页面监听的时候我们可以获取到页面的position,这个很重要我创建了一个全局变量currentItem,将position赋值给currentItem,然后用ViewPager的setonclicklistener方法做文章,这样就可以简单的实现了ViewPager的item的点击监听了。
pager.setOnClickListener(new View.OnClickListener() {
    @Override
    public void onClick(View v) {
        Toast.makeText(MainActivity.this, "你点击了地"+currentItem+"张", Toast.LENGTH_SHORT).show();
    }
});
       就几行代码而已,亲测有效,详细的在下面:
package com.example.administrator.myapplication;

import android.app.Activity;
import android.os.Bundle;
import android.support.v4.view.PagerAdapter;
import android.support.v4.view.ViewPager;
import android.view.View;
import android.view.ViewGroup;
import android.widget.ArrayAdapter;
import android.widget.AutoCompleteTextView;
import android.widget.ImageView;
import android.widget.LinearLayout;
import android.widget.Toast;

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

public class MainActivity extends Activity {
    AutoCompleteTextView text;
    ArrayAdapter arrayAdapter;
    ViewPager pager;
    List<View> mImages;
    ViewPagerAdapter adapter;
    int currentItem;

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);
        mImages = new ArrayList<>();
        View view1 = View.inflate(this,R.layout.image1,null);
        mImages.add(view1);
        View view2 = View.inflate(this,R.layout.image2,null);
        mImages.add(view2);
        View view3 = View.inflate(this,R.layout.image3,null);
        mImages.add(view3);

        adapter = new ViewPagerAdapter();
        findView();
    }
    private void findView(){
        text = (AutoCompleteTextView) findViewById(R.id.actv_card_no);
        String [] arr={"aa","aab","aac"};
        arrayAdapter = new ArrayAdapter<String>(this, android.R.layout.simple_list_item_1,arr);
        text.setAdapter(arrayAdapter);
        pager = (ViewPager) findViewById(R.id.vp);
        pager.setAdapter(adapter);
        pager.setOnPageChangeListener(new pagerListener());
        pager.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View v) {
                Toast.makeText(MainActivity.this, "你点击了地"+currentItem+"张", Toast.LENGTH_SHORT).show();
            }
        });
    }
    class ViewPagerAdapter extends PagerAdapter{

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

        @Override
        public boolean isViewFromObject(View view, Object object) {
            return view == object;
        }

        @Override
        public Object instantiateItem(ViewGroup container, final int position) {
            container.addView(mImages.get(position));
            mImages.get(position).setOnClickListener(new View.OnClickListener() {
                @Override
                public void onClick(View v) {
                    Toast.makeText(MainActivity.this, "你点击了地"+position+"张", Toast.LENGTH_SHORT).show();
                }
            });
            return mImages.get(position);
        }

        @Override
        public void destroyItem(ViewGroup container, int position, Object object) {
            container.removeView(mImages.get(position));
        }
    }
    class pagerListener implements ViewPager.OnPageChangeListener{

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

        }

        @Override
        public void onPageSelected(int position) {
                currentItem = position;
        }

        @Override
        public void onPageScrollStateChanged(int state) {

        }
    }
}
         这是自己的开发笔记,也希望帮助到开发者。
  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值