HttpURLConnection网络解析+universalimageloader解析图片+XListView刷新、加载+无限轮播

activity_main.xml
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:tools="http://schemas.android.com/tools"
    android:id="@+id/activity_main"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    android:orientation="vertical"
    tools:context="com.bw.yuekao_lainxi.MainActivity">

    <android.support.v4.view.ViewPager
        android:id="@+id/pager"
        android:layout_width="match_parent"
        android:layout_height="match_parent"
        android:layout_weight="1"/>
    <RadioGroup
        android:id="@+id/rg"
        android:layout_width="match_parent"
        android:layout_height="match_parent"
        android:layout_weight="9"
        android:orientation="horizontal">
        <RadioButton
            android:id="@+id/rb1"
            android:layout_width="match_parent"
            android:layout_height="match_parent"
            android:layout_weight="1"
            android:button="@null"
            android:gravity="center"
            android:textSize="20sp"
            android:text="我的"/>
        <RadioButton
            android:id="@+id/rb2"
            android:layout_width="match_parent"
            android:layout_height="match_parent"
            android:layout_weight="1"
            android:button="@null"
            android:gravity="center"
            android:textSize="20sp"
            android:text="信息"/>
        <RadioButton
            android:id="@+id/rb3"
            android:layout_width="match_parent"
            android:layout_height="match_parent"
            android:layout_weight="1"
            android:button="@null"
            android:gravity="center"
            android:textSize="20sp"
            android:text="中心"/>
        <RadioButton
            android:id="@+id/rb4"
            android:layout_width="match_parent"
            android:layout_height="match_parent"
            android:layout_weight="1"
            android:button="@null"
            android:gravity="center"
            android:textSize="20sp"
            android:text="我的"/>
    </RadioGroup>
</LinearLayout>
 
 
 
fragment1.xml
<?xml version="1.0" encoding="utf-8"?>
<android.support.v4.widget.DrawerLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:id="@+id/drawer"
    android:layout_width="match_parent"
    android:layout_height="match_parent">

    <ListView
        android:id="@+id/lv"
        android:layout_width="240sp"
        android:layout_height="match_parent"
        android:layout_gravity="start"
        android:background="#fff"
        android:choiceMode="singleChoice"
        android:divider="#f00"
        android:dividerHeight="1dp"
        android:entries="@array/books" />

    <LinearLayout
        android:layout_width="match_parent"
        android:layout_height="match_parent"
        android:orientation="vertical">

        <RelativeLayout
            android:layout_width="match_parent"
            android:layout_height="match_parent"
            android:layout_weight="7">

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

            <LinearLayout
                android:id="@+id/dotContainer"
                android:layout_width="match_parent"
                android:layout_height="40dp"
                android:layout_alignParentBottom="true"
                android:gravity="center"
                android:orientation="horizontal" />
        </RelativeLayout>

        <ListView
            android:id="@+id/lv1"
            android:layout_width="match_parent"
            android:layout_height="match_parent"
            android:layout_weight="3" />
    </LinearLayout>
</android.support.v4.widget.DrawerLayout>


doc_select.xml
<?xml version="1.0" encoding="utf-8"?>
<shape xmlns:android="http://schemas.android.com/apk/res/android">
    <size
        android:width="10dp"
        android:height="10dp" />
    <solid android:color="#ff0000" />
    <corners android:radius="5dp" />
</shape>
 
doc_select_no.xml
<?xml version="1.0" encoding="utf-8"?>
<shape xmlns:android="http://schemas.android.com/apk/res/android">
    <size
        android:width="10dp"
        android:height="10dp" />
    <solid android:color="#00ff00" />
    <corners android:radius="5dp" />
</shape>
 
 
 
 
MainActivity
package com.bw.yuekao_lainxi;

import android.support.v4.app.Fragment;
import android.support.v4.app.FragmentPagerAdapter;
import android.support.v4.view.ViewPager;
import android.support.v7.app.AppCompatActivity;
import android.os.Bundle;
import android.widget.RadioButton;
import android.widget.RadioGroup;

import com.bw.fragment.Fragment01;
import com.bw.fragment.Fragment02;
import com.bw.fragment.Fragment03;
import com.bw.fragment.Fragment04;

import java.util.ArrayList;
import java.util.List;

public class MainActivity extends AppCompatActivity {
    private List<Fragment> listFrag = new ArrayList<>();
    private Fragment01 fragment01 = new Fragment01();
    private Fragment02 fragment02 = new Fragment02();
    private Fragment03 fragment03 = new Fragment03();
    private Fragment04 fragment04 = new Fragment04();
    private ViewPager pager;
    private RadioGroup rg;
    private RadioButton rb1,rb2,rb3,rb4;


    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);
        listFrag.add(fragment01);
        listFrag.add(fragment02);
        listFrag.add(fragment03);
        listFrag.add(fragment04);
        pager = (ViewPager) findViewById(R.id.pager);
        rg = (RadioGroup) findViewById(R.id.rg);
        pager.setAdapter(new FragmentPagerAdapter(getSupportFragmentManager()) {
            @Override
            public Fragment getItem(int position) {
                return listFrag.get(position);
            }
            @Override
            public int getCount() {
                return listFrag.size();
            }
        });
        pager.setOnPageChangeListener(new ViewPager.OnPageChangeListener() {
            @Override
            public void onPageScrolled(int position, float positionOffset, int positionOffsetPixels) {

            }

            @Override
            public void onPageSelected(int position) {
                switch (position){
                    case 0:
                        rg.check(R.id.rb1);
                        break;
                    case 1:
                        rg.check(R.id.rb2);
                        break;
                    case 2:
                        rg.check(R.id.rb3);
                        break;
                    case 3:
                        rg.check(R.id.rb4);
                        break;
                }
            }

            @Override
            public void onPageScrollStateChanged(int state) {

            }
        });
        rg.setOnCheckedChangeListener(new RadioGroup.OnCheckedChangeListener() {
            @Override
            public void onCheckedChanged(RadioGroup group, int checkedId) {
                switch (checkedId){
                    case R.id.rb1:
                        pager.setCurrentItem(0);
                        break;
                    case R.id.rb2:
                        pager.setCurrentItem(1);
                        break;
                    case R.id.rb3:
                        pager.setCurrentItem(2);
                        break;
                    case R.id.rb4:
                        pager.setCurrentItem(3);
                        break;
                }
            }
        });
    }
}
Fragment01第一个Fragment
package com.bw.fragment;

import android.os.AsyncTask;
import android.os.Handler;
import android.os.Message;
import android.support.v4.app.Fragment;
import android.support.v4.view.ViewPager;
import android.support.v4.widget.DrawerLayout;
import android.os.Bundle;
import android.view.LayoutInflater;
import android.view.View;
import android.view.ViewGroup;
import android.widget.ImageView;
import android.widget.LinearLayout;
import android.widget.ListView;


import com.bw.adapter.MyPagerAdapter;
import com.bw.bean.ComicsBean;
import com.bw.bean.DataBean;
import com.bw.bean.SuperClass;
import com.bw.utils.NetWork;
import com.bw.yuekao_lainxi.R;
import com.google.gson.Gson;


import java.util.ArrayList;
import java.util.List;

/**
 * Created by 
 */

public class Fragment01 extends Fragment {
    private static final String JSON = "";
    private DrawerLayout drawerLayout;
    private ListView lv,lv1;
    private ViewPager viewPager;
    private MyPagerAdapter pagerAdapter;
    private List<ComicsBean> listPager;
    private LinearLayout dotContainer;
    private NetWork netWork = new NetWork();
    private Handler handler = new Handler(){
        @Override
        public void handleMessage(Message msg) {
            super.handleMessage(msg);
            if (msg.what == 0){
                int currentItem = viewPager.getCurrentItem();
                viewPager.setCurrentItem(currentItem+1);
                handler.sendEmptyMessageDelayed(0,3000);
            }
        }
    };
    private List<ImageView> imgList;
    private List<String> list = new ArrayList<>();

    @Override
    public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) {
        View view = inflater.inflate(R.layout.fragment1, null);
        lv = (ListView) view.findViewById(R.id.lv);
        lv1 = (ListView) view.findViewById(R.id.lv1);
        viewPager = (ViewPager) view.findViewById(R.id.viewPager);
        dotContainer = (LinearLayout) view.findViewById(R.id.dotContainer);
        init();
        return view;
    }

    private void init() {
        new AsyncTask<String,Integer,String>(){
            @Override
            protected String doInBackground(String... params) {
                String jsonStr = netWork.getStringJson(JSON);
                return jsonStr;
            }
            @Override
            protected void onPostExecute(String s) {
                super.onPostExecute(s);
                //解析数据
                SuperClass superClass = new Gson().fromJson(s, SuperClass.class);
                DataBean data = superClass.getData();
                listPager = data.getComics();
                list.clear();
                for (int i=0;i<listPager.size();i++){
                    list.add(listPager.get(i).getCover_image_url());
                }
                //初始化小圆点
                initDoc();
                pagerAdapter = new MyPagerAdapter(getActivity(),list);
                viewPager.setAdapter(pagerAdapter);
                viewPager.setCurrentItem(list.size()*10000);
                handler.sendEmptyMessageDelayed(0,3000);
                viewPager.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<imgList.size();i++){
                            if (i == position%imgList.size()){
                                imgList.get(i).setImageResource(R.drawable.doc_select);
                            }else {
                                imgList.get(i).setImageResource(R.drawable.doc_select_no);
                            }
                        }
                    }
                    @Override
                    public void onPageScrollStateChanged(int state) {

                    }
                });
            }
        }.execute();
    }


    private void initDoc() {
        imgList = new ArrayList<>();
        dotContainer.removeAllViews();
        imgList.clear();
        for (int i=0;i<list.size();i++){
            ImageView imageView = new ImageView(getActivity());
            if (i == 0){
                imageView.setImageResource(R.drawable.doc_select);
            }else {
                imageView.setImageResource(R.drawable.doc_select_no);
            }
            //添加到集合
            imgList.add(imageView);
            //添加到线性布局
            LinearLayout.LayoutParams params = new LinearLayout.LayoutParams(LinearLayout.LayoutParams.WRAP_CONTENT,LinearLayout.LayoutParams.WRAP_CONTENT);
            params.setMargins(5,0,5,0);
            dotContainer.addView(imageView,params);
        }
    }

}
MyPagerAdapter自动轮播适配器
package com.bw.adapter;
import android.content.Context;
import android.support.v4.view.PagerAdapter;
import android.view.View;
import android.view.ViewGroup;
import android.view.ViewParent;
import android.widget.ImageView;

import com.nostra13.universalimageloader.core.ImageLoader;

import java.util.List;

/**
 * Created by on 2017/9/21.
 */

public class MyPagerAdapter extends PagerAdapter {
    private Context context;
    private List<String> list;

    public MyPagerAdapter(Context context, List<String> list) {
        this.context = context;
        this.list = list;
    }

    @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 = new ImageView(context);
        imageView.setScaleType(ImageView.ScaleType.FIT_XY);
        //加载图片
        ImageLoader.getInstance().displayImage(list.get(position%list.size()),imageView);
        ViewParent parent = imageView.getParent();
        if(parent != null){
            ViewGroup viewGroup = (ViewGroup) parent;
            viewGroup.removeAllViews();
        }
        container.addView(imageView);
        return imageView;
    }

    @Override
    public void destroyItem(ViewGroup container, int position, Object object) {
        container.removeView((View) object);
    }
}
工具类:解析数据
package com.bw.utils;

import java.io.IOException;
import java.io.InputStream;
import java.net.HttpURLConnection;
import java.net.URL;

/**
 * Created by
 */

public class NetWork {
    //HttpURLConnection解析Json数据
    public String getStringJson(String jsonUrl){
        //声明
        URL url = null;
        HttpURLConnection httpURLConnection = null;
        InputStream inputStream = null;
        String str = "";
        try {
            //获取网址
            url = new URL(jsonUrl);
            //打开网址
            httpURLConnection = (HttpURLConnection) url.openConnection();
            //获取请求码
            int code = httpURLConnection.getResponseCode();
            //判断请求码
            if (code == 200){
                //解析
                inputStream = httpURLConnection.getInputStream();
                byte[] b = new byte[1024];
                int len = 0;
                //循环解析
                while ((len = inputStream.read(b)) != -1){
                    str += new String(b,0,len);
                }
            }
        } catch (Exception e) {
            e.printStackTrace();
        } finally {
            if (inputStream != null){
                try {
                    inputStream.close();
                } catch (IOException e) {
                    e.printStackTrace();
                }
            }
        }
        return str;
    }
}
工具类:解析图片
package com.bw.utils;

import android.app.Application;

import com.nostra13.universalimageloader.core.ImageLoader;
import com.nostra13.universalimageloader.core.ImageLoaderConfiguration;

/**
 * Created by
 */

public class ImageWork extends Application {
    @Override
    public void onCreate() {
        super.onCreate();
        //创建ImageLoaderConfiguration
        ImageLoaderConfiguration config = new ImageLoaderConfiguration.Builder(this)
                .memoryCacheExtraOptions(200,400)
                .build();
        //初始化ImageLoader
        ImageLoader.getInstance().init(config);
    }
}
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值