ViewPager循环
android.support.v4.view.ViewPager
ViewPager的使用跟AbsListView,AbsSpinner類似,需要用一個adapter填充數(shù)據(jù),同時實現(xiàn)了onPagerChangeListener接口。
ViewPager需要的adapter繼承自android.support.v4.view.PageAdapter,getCount返回adapter的長度,destroyItem滑出屏幕做remove操作,instantiateItem返回填充的視圖對象。
要想讓ViewPager顯示循環(huán)的效果網(wǎng)上大多采用給adapter的getCount返回一個很長的數(shù)字,然后在返回視圖對象的時候用長度getCount%真實數(shù)據(jù)集合的長度去求余數(shù),求的的余數(shù)就是數(shù)據(jù)集合中拿出來要給instantiateitem返回的視圖對象。
然后還可以根據(jù)這個余數(shù)去設置indicator(小圓點索引)的狀態(tài)
如圖:
代碼:
初始化一個裝這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動態(tài)給加載圖片的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());//根據(jù)余數(shù)返回要填充的ImageView}RequestQueue mQueue = Volley.newRequestQueue(getActivity());}
如果你的ViewPager位于ListView的頭部,你就會發(fā)現(xiàn)對內(nèi)容的單擊事件沒法監(jiān)聽了,如果監(jiān)聽了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循环的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: css斜角覆盖阴影
- 下一篇: POJ2104 (平方分割)二分查找理解