一. 前提 xlistciew 可以完美的运行后
该方法也必须创建
xl.setPullRefreshEnable(true);
现创建单独的xml 内设
<android.support.v4.view.ViewPager android:id="@+id/vp" android:layout_width="match_parent" android:layout_height="250dp"></android.support.v4.view.ViewPager> <LinearLayout android:layout_width="match_parent" android:layout_height="100dp" android:id="@+id/lll" android:gravity="center" android:orientation="horizontal" ></LinearLayout>然后填充到主布局当中
调用
xl.addHeaderView(inflate) 该方法(内容为所要添加的控件)必须要写
创建适配器
@Override public int getCount() { return Integer.MAX_VALUE; } @Override public boolean isViewFromObject(View view, Object object) { return view==object; } @Override public void destroyItem(ViewGroup container, int position, Object object) { container.removeView((View) object); // mHandler.removeCallbacksAndMessages(null); } @Override public Object instantiateItem(ViewGroup container, int position) { ImageView iv= new ImageView(MainActivity.this); int len=position%data.size(); ImageLoader.getInstance().displayImage(data.get(len).img,iv); container.addView(iv); return iv; }然后引用适配器
启动适配器
实现无限轮播的加点
public void jadian(){ arr = new ArrayList<>();//arr中只放一个imagview if (arr!=null) { arr.clear(); } for(int i=0;i<data.size();i++){ iv = new ImageView(MainActivity.this); if(i==vp.getCurrentItem()){ iv.setImageResource(R.drawable.dot_focus); }else{ iv.setImageResource(R.drawable.dot_normal); } LinearLayout.LayoutParams params=new LinearLayout.LayoutParams(20,20); params.setMargins(10,0,10,0); arr.add(iv); lll.addView(iv,params); } }
最后添加viewpager的监听事件实现点与图片的联动
vp.setOnPageChangeListener(new ViewPager.OnPageChangeListener() { @Override public void onPageScrolled(int position, float positionOffset, int positionOffsetPixels) { } @Override public void onPageSelected(int position) { for (int x=0;x<arr.size();x++){ if (position % data.size() == x) { //证明点和图片是对应的,应该点是变红的 arr.get(position % data.size()).setImageResource(R.drawable.dot_focus); } else { arr.get(x).setImageResource(R.drawable.dot_normal); } } } @Override public void onPageScrollStateChanged(int state) { } }); }
上述代码中R.drawable.dot_focus
需要在drawable文件中创建内容如下
<shape xmlns:android="http://schemas.android.com/apk/res/android" android:shape="rectangle"> <corners android:radius="8dp"></corners> <solid android:color="#f00"></solid> </shape>在实现后可能出现的问题
1.点可能会无限的增加 解决 :填充控件进行清空lll.removeAllViews(); 该方法可写在上拉方法中2.轮播睡眠时间可能会剪短 解决:
//解除handler的 mHandler.removeCallbacksAndMessages(null);该方法可写在上拉方法中