Main
package com.example.yuekaolianxi02; import android.os.AsyncTask; import android.os.Bundle; import android.os.Handler; import android.os.Message; import android.support.annotation.IdRes; import android.support.v4.view.ViewPager; import android.support.v7.app.AppCompatActivity; import android.widget.RadioGroup; import com.google.gson.Gson; import com.limxing.xlistview.view.XListView; import java.io.ByteArrayOutputStream; import java.io.IOException; import java.io.InputStream; import java.net.HttpURLConnection; import java.net.URL; import java.net.URLEncoder; import java.util.ArrayList; import java.util.List; public class MainActivity extends AppCompatActivity implements XListView.IXListViewListener{ private XListView xlistview; private MyAdapter2 adapter2; private boolean flag; private int pageIndex = 1; private int a = 0; private RadioGroup rg; private ViewPager viewPager; private List<String> list = new ArrayList<String>(); private XListView xlv; private Handler handler = new Handler(){ @Override public void handleMessage(Message msg) { super.handleMessage(msg); int what = msg.what; viewPager.setCurrentItem(what); } }; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); //获取组件id rg = (RadioGroup) findViewById(R.id.rg); viewPager = (ViewPager) findViewById(R.id.viewPager); xlv = (XListView) findViewById(R.id.xlistView); list.add("http://wx1.sinaimg.cn/mw690/eb8fce65gy1fio7y2i47pj21601k07wi.jpg"); list.add("http://wx1.sinaimg.cn/mw690/eb8fce65gy1fio7y2i47pj21601k07wi.jpg"); list.add("http://wx1.sinaimg.cn/mw690/eb8fce65gy1fio7y2i47pj21601k07wi.jpg"); MyAdapter adapter = new MyAdapter(list,MainActivity.this); viewPager.setAdapter(adapter); getRadioPager(); xlv.setPullLoadEnable(true); xlv.setXListViewListener(this); getData(); //开启线程,自动轮播 new Thread(){ @Override public void run() { while(true){ try { Thread.sleep(1000); a++; handler.sendEmptyMessage(a); } catch (Exception e) { e.printStackTrace(); } } } }.start(); } //关联按钮和页面的方法 private void getRadioPager(){ viewPager.setOnPageChangeListener(new ViewPager.OnPageChangeListener() { @Override public void onPageScrolled(int position, float positionOffset, int positionOffsetPixels) { } @Override public void onPageSelected(int position) { switch (position%list.size()){ case 0: rg.check(R.id.rb1); break; case 1: rg.check(R.id.rb2); break; case 2: rg.check(R.id.rb3); break; } } @Override public void onPageScrollStateChanged(int state) { } }); rg.setOnCheckedChangeListener(new RadioGroup.OnCheckedChangeListener() { @Override public void onCheckedChanged(RadioGroup radioGroup, @IdRes int i) { switch (i%list.size()){ case R.id.rb1: viewPager.setCurrentItem(0); break; case R.id.rb2: viewPager.setCurrentItem(1); break; case R.id.rb3: viewPager.setCurrentItem(2); break; } } }); } private void getData(){ try { //http://apis.juhe.cn/cook/query.php?key=31d0619652c5b550b5f84e248a3bb268?m getContent("http://apis.juhe.cn/cook/query.php?menu="+ URLEncoder.encode("红烧肉","utf-8") +"&key=31d0619652c5b550b5f84e248a3bb268&pn="+pageIndex+"&rn=10"); } catch (Exception e) { e.printStackTrace(); } } //获取网络数据 private void getContent(String path){ new AsyncTask<String, Void, String>() { @Override protected void onPreExecute() { super.onPreExecute(); } @Override protected void onPostExecute(String s) { super.onPostExecute(s); if(s == null){ return; } Gson gson = new Gson(); Bean bean = gson.fromJson(s, Bean.class); List<Bean.ResultBean.DataBean> list = bean.getResult().getData(); if(adapter2 == null){ adapter2 = new MyAdapter2(list,MainActivity.this); xlv.setAdapter(adapter2); }else{ adapter2.loadMore(list,flag); } } @Override protected String doInBackground(String... strings) { try { String s = strings[0]; URL url = new URL(s); HttpURLConnection connection = (HttpURLConnection) url.openConnection(); connection.setRequestMethod("GET"); connection.setReadTimeout(5000); connection.setConnectTimeout(5000); int code = connection.getResponseCode(); if(code == 200){ InputStream is = connection.getInputStream(); String json = getJson(is); return json; } } catch (Exception e) { e.printStackTrace(); } return null; } }.execute(path); } //将数据转换为字节流 private String getJson(InputStream is){ try { ByteArrayOutputStream baos = new ByteArrayOutputStream(); byte[] buffer = new byte[1024]; int len = 0; while((len = is.read(buffer))!=-1){ baos.write(buffer,0,len); } is.close(); baos.close(); return baos.toString(); } catch (IOException e) { e.printStackTrace(); } return null; } @Override public void onRefresh() { flag =false; ++pageIndex; getData(); xlv.stopRefresh(true); } @Override public void onLoadMore() { flag = true; ++pageIndex; getData(); //停止加载更多 xlv.stopLoadMore(); } }------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
Adapter extend BaseAdapter
package com.example.yuekaolianxi02; import android.content.Context; import android.support.v4.view.PagerAdapter; import android.view.View; import android.view.ViewGroup; import android.widget.ImageView; import com.nostra13.universalimageloader.core.DisplayImageOptions; import com.nostra13.universalimageloader.core.ImageLoader; import java.util.List; /** * Created by la on 2017/8/18. */ public class MyAdapter extends PagerAdapter{ private List<String> list; private Context context; private DisplayImageOptions options; public MyAdapter(List<String> list, Context context) { this.list = list; this.context = context; options = new DisplayImageOptions.Builder().build(); } @Override public int getCount() { return Integer.MAX_VALUE; } @Override public boolean isViewFromObject(View view, Object object) { return view == object; } //添加视图 @Override public Object instantiateItem(ViewGroup container, int position) { //创建一个ImageView ImageView iv = new ImageView(context); ImageLoader.getInstance().displayImage(list.get(position%list.size()),iv,options); //添加视图 container.addView(iv); return iv; } //删除视图 @Override public void destroyItem(ViewGroup container, int position, Object object) { container.removeView((View) object); } }------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
Adapter
package com.example.yuekaolianxi02; import android.content.Context; import android.view.View; import android.view.ViewGroup; import android.widget.BaseAdapter; import android.widget.ImageView; import android.widget.TextView; import com.nostra13.universalimageloader.core.ImageLoader; import java.util.List; /** * Created by la on 2017/8/16. */ public class MyAdapter2 extends BaseAdapter{ private List<Bean.ResultBean.DataBean> list; private Context context; public MyAdapter2(List<Bean.ResultBean.DataBean> list, Context context) { this.list = list; this.context = context; } //加载更多 public void loadMore(List<Bean.ResultBean.DataBean> dataBeen,boolean flag){ for(Bean.ResultBean.DataBean beanList : dataBeen){ if(flag){ list.add(beanList); }else{ list.add(0,beanList); } } notifyDataSetChanged(); } @Override public int getCount() { return list.size(); } @Override public Object getItem(int i) { return list.get(i); } @Override public long getItemId(int i) { return i; } @Override public View getView(int i, View view, ViewGroup viewGroup) { if(view == null){ view = View.inflate(context, R.layout.item, null); } ImageView iv = (ImageView) view.findViewById(R.id.iv); TextView tv = (TextView) view.findViewById(R.id.tv); Bean.ResultBean.DataBean bean = list.get(i); tv.setText(bean.getTitle()); ImageLoader.getInstance().displayImage(bean.getAlbums().get(0),iv); return view; } }public class MyApplication extends Application{ @Override public void onCreate() { super.onCreate(); ImageLoaderConfiguration configuration = new ImageLoaderConfiguration.Builder(this) .build(); ImageLoader.getInstance().init(configuration); } }
权限<uses-permission android:name="android.permission.INTERNET"></uses-permission>android:name=".MyApplication"配置xml文件---------------------------------------------------------------------------------------------------------------- --------------------------------------------------------------------------------------------------------------- public class MyApplication extends Application{ @Override public void onCreate() { super.onCreate(); String path = Environment.getExternalStorageDirectory()+"/1507BAccess"; File cacheDir = new File(path); ImageLoaderConfiguration config = new ImageLoaderConfiguration.Builder(this) .threadPriority(100) .threadPoolSize(3) .memoryCacheExtraOptions(200,200) .memoryCacheSize(2 * 1024 * 1024) .diskCache(new UnlimitedDiskCache(cacheDir)) .diskCacheSize(50 * 1024 * 1024) .diskCacheFileNameGenerator(new Md5FileNameGenerator()) .build(); ImageLoader.getInstance().init(config); } /** * 配置图片是否缓存 * @return */ public static DisplayImageOptions getDisplayImageOptions(){ DisplayImageOptions options = new DisplayImageOptions.Builder() .showImageForEmptyUri(R.mipmap.ic_empty) .showImageOnFail(R.mipmap.ic_error) .showImageOnLoading(R.mipmap.loading) .cacheInMemory(true) .cacheOnDisk(true) .build(); return options; } }
<?xml version="1.0" encoding="utf-8"?><RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android" xmlns:app="http://schemas.android.com/apk/res-auto" xmlns:tools="http://schemas.android.com/tools" android:layout_width="match_parent" android:layout_height="match_parent" tools:context="com.example.banner.MainActivity"> <android.support.v4.view.ViewPager android:id="@+id/viewPager" android:layout_width="match_parent" android:layout_height="match_parent"> </android.support.v4.view.ViewPager> <RadioGroup android:id="@+id/rg" android:layout_width="wrap_content" android:layout_height="wrap_content" android:layout_centerHorizontal="true" android:layout_alignParentBottom="true" android:orientation="horizontal" > <RadioButton android:id="@+id/radio1" android:layout_width="wrap_content" android:layout_height="wrap_content" /> <RadioButton android:id="@+id/radio2" android:layout_width="wrap_content" android:layout_height="wrap_content" /> <RadioButton android:id="@+id/radio3" android:layout_width="wrap_content" android:layout_height="wrap_content" /> </RadioGroup></RelativeLayout>