图片轮播并加载网络数据

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"



 
----------------------------------------------------------------------------------------------------------------
---------------------------------------------------------------------------------------------------------------

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文件
<?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>

  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值