ViewPager循环
android.support.v4.view.ViewPager
ViewPager的使用跟AbsListView,AbsSpinner類似,需要用一個adapter填充數據,同時實現了onPagerChangeListener接口。
ViewPager需要的adapter繼承自android.support.v4.view.PageAdapter,getCount返回adapter的長度,destroyItem滑出屏幕做remove操作,instantiateItem返回填充的視圖對象。
要想讓ViewPager顯示循環的效果網上大多采用給adapter的getCount返回一個很長的數字,然后在返回視圖對象的時候用長度getCount%真實數據集合的長度去求余數,求的的余數就是數據集合中拿出來要給instantiateitem返回的視圖對象。
然后還可以根據這個余數去設置indicator(小圓點索引)的狀態
如圖:
代碼:
初始化一個裝這ImageView的List
List<ImageView> mViewPagerBannerList = new ArrayList<ImageView>(); for (int i = 0; i < 7; i++) {ImageView mImageView = (ImageView) LayoutInflater.from(getActivity()).inflate( R.layout.fragment_market_featured_item0_imageview, null);mViewPagerBannerList.add(mImageView); }重寫PageAdapter
class MyBannerPageAdapter extends PagerAdapter {List<ImageView> mImageViews;public MyBannerPageAdapter(List<ImageView> mImageViews) {this.mImageViews = mImageViews;}@Overridepublic int getCount() {// TODO Auto-generated method stubreturn mImageViews.size() * 100;}@Overridepublic boolean isViewFromObject(View arg0, Object arg1) {// TODO Auto-generated method stubreturn arg0 == arg1;}@Overridepublic void destroyItem(ViewGroup container, int position, Object object) {// TODO Auto-generated method stubcontainer.removeView(mImageViews.get(position % mImageViews.size()));}@Overridepublic Object instantiateItem(ViewGroup container, final int position) {ImageView mView = mImageViews.get(position % mImageViews.size());ImageLoader loader = new ImageLoader(mQueue,//以下這一部分代碼是Vollay動態給加載圖片的VolleyBitmapCache.getCache());ImageListener imageListener = ImageLoader.getImageListener(mView,0, 0);loader.get(mBannerApps.get(position % mImageViews.size()).getBanner_link(), imageListener);try {container.addView(mImageViews.get(position % mImageViews.size()), 0);} catch (Exception e) {// handler something}return mImageViews.get(position % mImageViews.size());//根據余數返回要填充的ImageView}RequestQueue mQueue = Volley.newRequestQueue(getActivity());}
如果你的ViewPager位于ListView的頭部,你就會發現對內容的單擊事件沒法監聽了,如果監聽了ViewPager的onClickListener之后,ViewPager的滑動會受到影響,我的做法是重寫ViewPager,重寫onTouch事件,在down和up事件上作文章,可見ViewPager嵌套使用的文章:http://blog.csdn.net/u013045971/article/details/41512055
大家有更好的方式的話,可以告訴我一下,謝謝。
?
轉載于:https://www.cnblogs.com/gmm283029/p/4498961.html
總結
以上是生活随笔為你收集整理的ViewPager循环的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: css斜角覆盖阴影
- 下一篇: POJ2104 (平方分割)二分查找理解