public class MainActivity extends AppCompatActivity { ArrayList<Author> arr = new ArrayList<Author>(); private GridView gridView; private Adater adater; private ViewPager viewPager; ArrayList<View> views = new ArrayList<>(); @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); gridView = (GridView) findViewById(R.id.gv); //创建方法异步获取数据 init(); //设置适配器 adater = new Adater(); gridView.setAdapter(adater); } private void init() { new AsyncTask<String, String, String>() { @Override protected String doInBackground(String... strings) { //获取网络数据 String s = initData(); Log.e("=====", s.toString()); return s; } @Override protected void onPostExecute(String s) { super.onPostExecute(s); //解析json Gson gson = new Gson(); NewsData newsData = gson.fromJson(s, NewsData.class); //添加进集合 List<Essay> essay = newsData.getData().getEssay(); for (int i = 0; i < essay.size(); i++) { List<Author> author = essay.get(i).getAuthor(); for (int j = 0; j < author.size(); j++) { String user_name = author.get(j).getUser_name(); String web_url = author.get(j).getWeb_url(); arr.add(new Author(user_name, web_url)); } } //刷新适配器 adater.notifyDataSetChanged(); //加载viewpager initPage(); } }.execute(""); } private void initPage() { //获取控件 viewPager = (ViewPager) findViewById(R.id.viewpager); //加载viewpager数据 initPagerDate(); //设置适配器 viewPager.setAdapter(new PagerAdapter() { @Override public int getCount() { //int型最大值 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) { //移除页面 int index = position % views.size(); container.removeView((View)object); } @Override public Object instantiateItem(ViewGroup container, int position) { //添加 int index = position % views.size(); container.addView(views.get(index)); return views.get(index); } }); //子线程 一秒后发送空信息 new Thread() { @Override public void run() { while (true) { try { Thread.sleep(1000); } catch (InterruptedException e) { e.printStackTrace(); } Message message = new Message(); handler.sendEmptyMessage(0); } } }.start(); } Handler handler = new Handler() { @Override public void handleMessage(Message msg) { super.handleMessage(msg); viewPager.setCurrentItem(viewPager.getCurrentItem()+1); } }; private void initPagerDate() { if (arr != null) { for (int i = 0; i < arr.size(); i++) { View inflate = View.inflate(MainActivity.this, R.layout.pager, null); ImageView images2 = inflate.findViewById(R.id.imageview); ImageLoader.getInstance().displayImage(arr.get(i).getWeb_url(), images2); views.add(inflate); } } } ////获取网络数据 private String initData() { try { //路径 URL url = new URL("http://v3.wufazhuce.com:8000/api/reading/index/?version=3.5.0&platform=android"); HttpURLConnection urlConnection = (HttpURLConnection) url.openConnection(); int code = urlConnection.getResponseCode(); if (code == 200) { InputStream stream = urlConnection.getInputStream(); ByteArrayOutputStream outputStream = new ByteArrayOutputStream(); int len = 0; byte[] bytes = new byte[1024]; while ((len = stream.read(bytes)) != -1) { outputStream.write(bytes, 0, len); } String s = new String(outputStream.toByteArray()); return s; } } catch (Exception e) { e.printStackTrace(); } return ""; } //适配器 class Adater extends BaseAdapter { public Adater() { super(); } @Override public int getCount() { if (arr != null) { return arr.size(); } return 0; } @Override public Object getItem(int i) { return arr.get(i); } @Override public long getItemId(int i) { return i; } @Override public View getView(int i, View view, ViewGroup viewGroup) { AAA aaa; if (view == null) { aaa = new AAA(); view = LayoutInflater.from(MainActivity.this).inflate(R.layout.gridview, null, false); aaa.tv1 = view.findViewById(R.id.tv1); aaa.images = view.findViewById(R.id.images); view.setTag(aaa); } else { aaa = (AAA) view.getTag(); } aaa.tv1.setText(arr.get(i).getUser_name()); ImageLoader.getInstance().displayImage(arr.get(i).getWeb_url(), aaa.images); return view; } } //盒子 class AAA { TextView tv1; ImageView images; } } public class MyApp extends Application { public void onCreate() { DisplayImageOptions options = new DisplayImageOptions.Builder() .showImageOnLoading(R.mipmap.ic_launcher).cacheInMemory(true) .cacheOnDisk(true).displayer(new FadeInBitmapDisplayer(1500)) .build(); ImageLoaderConfiguration configs = new ImageLoaderConfiguration.Builder( this).memoryCacheExtraOptions(480, 800) .diskCache(new UnlimitedDiscCache(Environment.getExternalStorageDirectory())) .memoryCacheSize(2 * 1024 * 1024) .diskCacheFileNameGenerator(new Md5FileNameGenerator()) .defaultDisplayImageOptions(options).build(); ImageLoader.getInstance().init(configs); } ; } //主布局文件 <android.support.v4.view.ViewPager android:id="@+id/page" android:layout_width="match_parent" android:layout_height="200dp"></android.support.v4.view.ViewPager> <GridView android:id="@+id/grid" android:layout_width="match_parent" android:layout_height="match_parent" android:numColumns="2"></GridView> (备注:布局文件以及实体类文件根据自己所需去配置,导包,配置权限)
GridView+无线轮播
最新推荐文章于 2018-08-10 19:47:57 发布