网上获取图片Viewpager轮播

来源:互联网 发布:java类修饰符 编辑:程序博客网 时间:2024/05/16 16:19
package animtest.com.example.e531.testtest.fragments;

import android.os.Bundle;
import android.support.annotation.Nullable;
import android.support.v4.app.Fragment;
import android.support.v4.view.ViewPager;
import android.view.LayoutInflater;
import android.view.View;
import android.view.ViewGroup;
import android.widget.Button;

import com.google.gson.Gson;

import java.util.List;

import animtest.com.example.e531.testtest.R;
import animtest.com.example.e531.testtest.adapter.MyLunBoAdapter;
import animtest.com.example.e531.testtest.bean.Result;
import animtest.com.example.e531.testtest.myinterfaces.Icallbacks;
import animtest.com.example.e531.testtest.utils.MyNetTask;
import animtest.com.example.e531.testtest.view.XListView;

/**
 * Created by e531 on 2017/11/14.
 */
public class TuijianFragment extends Fragment {

    private ViewPager viewPager;
    private XListView xListView;

    @Nullable
    @Override
    public View onCreateView(LayoutInflater inflater, @Nullable ViewGroup container, @Nullable Bundle savedInstanceState) {
        View v = inflater.inflate(R.layout.tuijian, container, false);
        viewPager = (ViewPager) v.findViewById(R.id.vp);
        xListView = (XListView) v.findViewById(R.id.xlv);

        return v;
    }

    @Override
    public void onActivityCreated(@Nullable Bundle savedInstanceState) {
        super.onActivityCreated(savedInstanceState);

        //调用网络请求工具类,获取数据
        MyNetTask myNetTask=new MyNetTask(new Icallbacks() {
            @Override
            public void getNetdata(String jsonstr) {
                //gson
                Gson gson=new Gson();
                Result result=gson.fromJson(jsonstr, Result.class);

                //listview要显示的数据
                List<Result.DataEntity> listviewDatas = result.getData();
                //轮播图要显示的数据
                List<Result.DataScrollEntity> viewpagerDatas = result.getDataScroll();

                //为viewpager设置适配器
                viewPager.setAdapter(new MyLunBoAdapter(getActivity(),viewpagerDatas));
            }
        });
        myNetTask.execute("http://www.93.gov.cn/93app/data.do?channelId=0&startNum=0");

    }
}




适配器 

package animtest.com.example.e531.testtest.adapter;

import android.content.Context;
import android.support.v4.view.PagerAdapter;
import android.util.Log;
import android.view.View;
import android.view.ViewGroup;
import android.widget.ImageView;

import com.nostra13.universalimageloader.core.ImageLoader;

import java.util.List;

import animtest.com.example.e531.testtest.bean.Result;
import animtest.com.example.e531.testtest.utils.ImageUtils;

/**
 * Created by e531 on 2017/11/13.
 */
public class MyLunBoAdapter extends PagerAdapter{


    private Context context;
    //用于存放网络图片的url地址
    private List<Result.DataScrollEntity> imgUrl;


    public MyLunBoAdapter(Context context, List<Result.DataScrollEntity> imgUrl) {
        this.context = context;
        this.imgUrl=imgUrl;
    }

    //返回页面的数量
    @Override
    public int getCount() {
        return Integer.MAX_VALUE;
    }

    @Override
    public boolean isViewFromObject(View view, Object object) {
        return view==object;
    }

    //0~getCount返回的值-1
    @Override
    public Object instantiateItem(ViewGroup container, int position) {
        //返回当前显示的视图
        ImageView imageView = new ImageView(context);
        //图片的绽放方式
        imageView.setScaleType(ImageView.ScaleType.FIT_XY);

        //取得图片的网络路径  imgUrl.size 5
        String path=imgUrl.get((position%imgUrl.size())).getIMAGEURL();
        Log.d("zzz","path:"+path);

        //使用ImageLoader下载图片 注意:需要拼接路径
        ImageLoader.getInstance().displayImage("http://www.93.gov.cn/"+path,
                imageView, ImageUtils.getImageOptions());


        //添加到容器
        container.addView(imageView);

        return imageView;
    }

    @Override
    public void destroyItem(ViewGroup container, int position, Object object) {

        container.removeView((View) object);
    }
}


//XML

<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:orientation="vertical" android:layout_width="match_parent"
    android:layout_height="match_parent">

    <android.support.v4.view.ViewPager
        android:layout_width="match_parent"
        android:layout_height="200dp"
        android:id="@+id/vp"></android.support.v4.view.ViewPager>

<animtest.com.example.e531.testtest.view.XListView
    android:id="@+id/xlv"
    android:layout_height="match_parent"
    android:layout_width="match_parent">

</animtest.com.example.e531.testtest.view.XListView>



</LinearLayout>