1.MainActyty
private XListView xlv; String path="http://www.meirixue.com/api.php?c=index&a=index"; private MyAdapter myAdapter; private String s; private ViewPager vip; private Adapter adapter; private List<Bean.DataBean.AdlistBean> adlist; private LinearLayout ll; private List<ImageView> ilist; private Handler handler=new Handler(){ @Override public void handleMessage(Message msg) { super.handleMessage(msg); myAdapter.notifyDataSetChanged(); xlv.stopRefresh(); xlv.stopLoadMore(); int a=msg.what; switch (a){ case 1: int currentItem = vip.getCurrentItem(); currentItem++; vip.setCurrentItem(currentItem); break; } } }; private ImageView iv; private SharedPreferences sp; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); xlv = (XListView) findViewById(R.id.xlv); // SharedPreferences来进行缓存图片 sp = getSharedPreferences("u", MODE_PRIVATE); // 判断 if(sp.getString("s",null)==null){ indate(); }else{ String s = sp.getString("s", null); Gson gson = new Gson(); Bean bean = gson.fromJson(s, Bean.class); adlist = bean.getData().getAdlist(); myAdapter = new MyAdapter(); xlv.setAdapter(myAdapter); // indate(); } // indate(); xlv.setPullRefreshEnable(true); xlv.setPullLoadEnable(true); xlv.setXListViewListener(this); } @Override public void onRefresh() { handler.postDelayed(new Runnable() { @Override public void run() { adlist.add(0,adlist.get(3)); } },2000); handler.sendEmptyMessage(0); } @Override public void onLoadMore() { handler.postDelayed(new Runnable() { @Override public void run() { adlist.add(adlist.get(3)); } },2000); handler.sendEmptyMessage(0); } // 异步加载请求数据 private void indate() { new AsyncTask<String,Void,String>(){ private ByteArrayOutputStream outputStream; @Override protected String doInBackground(String... params) { try { URL url = new URL(params[0]); HttpURLConnection connetion= (HttpURLConnection) url.openConnection(); connetion.setRequestMethod("GET"); connetion.setConnectTimeout(2000); int responseCode = connetion.getResponseCode(); if(responseCode==200){ InputStream inputStream = connetion.getInputStream(); outputStream = new ByteArrayOutputStream(); int len; byte[] by=new byte[1024]; while ((len=inputStream.read(by))!=-1){ outputStream.write(by,0,len); } s = outputStream.toString(); // 添加 sp.edit().putString("s",s).commit(); } } catch (Exception e) { e.printStackTrace(); } return s; } @Override protected void onPostExecute(String s) { super.onPostExecute(s); Gson gson = new Gson(); Bean bean = gson.fromJson(s, Bean.class); adlist = bean.getData().getAdlist(); myAdapter = new MyAdapter(); // 头布局 LayoutInflater inflater=LayoutInflater.from(MainActivity.this); View view = inflater.inflate(R.layout.viewpager, null); vip = (ViewPager) view.findViewById(R.id.vip); ll = (LinearLayout) view.findViewById(R.id.ll); adapter = new Adapter(); vip.setCurrentItem(100000); //无限轮播 Timer timer = new Timer(); timer.schedule(new TimerTask() { @Override public void run() { handler.sendEmptyMessage(1); } },2000,2000); // 加点 dian(); pager(); vip.setAdapter(adapter); // 添加头 xlv.addHeaderView(view); // xlistview 适配器关联 xlv.setAdapter(myAdapter); } }.execute(path); } // 点的监听 private void pager() { vip.setOnPageChangeListener(new ViewPager.OnPageChangeListener() { @Override public void onPageScrolled(int position, float positionOffset, int positionOffsetPixels) { } @Override public void onPageSelected(int position) { for(int i=0;i<ilist.size();i++){ if(position%adlist.size()==i){ ilist.get(position%adlist.size()).setImageResource(R.drawable.dot_focuable); } else{ ilist.get(i).setImageResource(R.drawable.dot_normal); } } } @Override public void onPageScrollStateChanged(int state) { } }); } // 点的方法 private void dian() { ilist=new ArrayList<>(); if(ilist!=null){ ilist.clear(); } for(int i=0;i<adlist.size();i++){ iv = new ImageView(MainActivity.this); if(i==0){ iv.setImageResource(R.drawable.dot_focuable); } else{ iv.setImageResource(R.drawable.dot_normal); } LinearLayout.LayoutParams params = new LinearLayout.LayoutParams(20, 20); params.setMargins(10,0,10,0); ll.addView(iv,params); ilist.add(iv); } } //xlistview适配器 class MyAdapter extends BaseAdapter{ @Override public int getCount() { return adlist.size(); } @Override public Object getItem(int position) { return null; } @Override public long getItemId(int position) { return 0; } @Override public View getView(int position, View convertView, ViewGroup parent) { convertView=View.inflate(MainActivity.this,R.layout.item,null); ImageView iv= (ImageView) convertView.findViewById(R.id.iv); TextView tv= (TextView) convertView.findViewById(R.id.tv); //图片缓存 DisplayImageOptions options=new DisplayImageOptions.Builder() .cacheOnDisk(true) .cacheInMemory(true) .build(); ImageLoader.getInstance().displayImage(adlist.get(position).getImg(),iv,options); tv.setText(adlist.get(position).getTitle()); return convertView; } } viewpager适配器 class Adapter extends PagerAdapter{ @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); } @Override public Object instantiateItem(ViewGroup container, int position) { ImageView im=new ImageView(MainActivity.this); /* DisplayImageOptions options=new DisplayImageOptions.Builder() .cacheOnDisk(true) .cacheInMemory(true) .build();*/ ImageLoader.getInstance().displayImage(adlist.get(position%adlist.size()).getImg(),im); container.addView(im); return im; } } }
2.main.xml
<com.bawei.utils.XListView android:layout_width="match_parent" android:layout_height="match_parent" android:id="@+id/xlv"></com.bawei.utils.XListView>3.viewpager.xml<android.support.v4.view.ViewPager android:id="@+id/vip" android:layout_width="match_parent" android:layout_height="200dp"></android.support.v4.view.ViewPager> <LinearLayout android:id="@+id/ll" android:layout_width="wrap_content" android:layout_height="wrap_content" android:layout_gravity="center" android:orientation="horizontal" ></LinearLayout>4.item.xml<ImageView android:id="@+id/iv" android:layout_width="100dp" android:layout_height="100dp" /> <TextView android:id="@+id/tv" android:layout_marginLeft="20dp" android:layout_width="wrap_content" android:layout_height="wrap_content" android:textSize="20sp"/>