每日一记把一个viewpager放入到一个listview里面,具体的想实现的效果是仿网易新闻的头部那里。

来源:互联网 发布:debian知乎 编辑:程序博客网 时间:2024/05/21 01:52

   由于自己的项目忘记截图了,我弄一个网易的类似的图


   实现的方式是一个viewpager,然后下面是一个listview,把这个viewpager当做listview的headview.

        难点主要是要重写viewpager,不要让他和listview的滑动起冲突。重写它的那个viewpager,可以避免这个问题


首先是重写viewpager.

<span style="font-family:KaiTi_GB2312;font-size:18px;">public class MyViewPager extends ViewPager {public MyViewPager(Context context) {super(context);// TODO Auto-generated constructor stub}public MyViewPager(Context context, AttributeSet attrs) {          super(context, attrs);      }  @Overridepublic boolean dispatchTouchEvent(MotionEvent ev) {// TODO Auto-generated method stubgetParent().requestDisallowInterceptTouchEvent(true);return super.dispatchTouchEvent(ev);}}</span>


再一个就是adapter

<span style="font-family:KaiTi_GB2312;font-size:18px;">public class MyViewPagerAdapter extends PagerAdapter{private List<ImageView> imageViews;private int[] imageResId;public MyViewPagerAdapter(int[] imageResId,List<ImageView> imageViews){this.imageResId = imageResId;this.imageViews = imageViews;}@Overridepublic int getCount() {return imageResId.length;}@Overridepublic boolean isViewFromObject(View arg0, Object arg1) {return arg0 == arg1;}@Overridepublic Object instantiateItem(View arg0, int arg1) {((ViewPager) arg0).addView(imageViews.get(arg1));return imageViews.get(arg1);}@Overridepublic void destroyItem(View arg0, int arg1, Object arg2) {((ViewPager) arg0).removeView((View) arg2);}@Overridepublic void restoreState(Parcelable arg0, ClassLoader arg1) {}@Overridepublic Parcelable saveState() {return null;}@Overridepublic void startUpdate(View arg0) {}@Overridepublic void finishUpdate(View arg0) {}}</span>

最后那里由于自己的那个代码还又别的东西就不贴图了。基本上就是一个添加headview的方法

  如果有错误 还请多多指教一下。。    希望大神指教啊。。


0 0
原创粉丝点击