侧滑+多条目+上拉加载+下拉刷新+无线轮播

APP

package com.example.week_02_02;

import android.app.Application;

import com.nostra13.universalimageloader.core.DisplayImageOptions;
import com.nostra13.universalimageloader.core.ImageLoader;
import com.nostra13.universalimageloader.core.ImageLoaderConfiguration;
import com.nostra13.universalimageloader.core.display.RoundedBitmapDisplayer;

public class App extends Application {
    @Override
    public void onCreate() {
        super.onCreate();

        ImageLoader.getInstance().init(
                new ImageLoaderConfiguration.Builder(this)
                        .diskCacheSize(50*1024*1024)
                        .diskCacheFileCount(10)
                        .defaultDisplayImageOptions(
                                new DisplayImageOptions.Builder()
                                
                                        .cacheInMemory(true)
                                        .cacheOnDisk(true)
                                        .displayer(new RoundedBitmapDisplayer(10))
                                        .build()
                        )
                        .build()
        );
    }
}

activity

package com.example.week_02_02;

import android.support.v4.widget.DrawerLayout;
import android.support.v7.app.ActionBar;
import android.support.v7.app.ActionBarDrawerToggle;
import android.support.v7.app.AppCompatActivity;
import android.os.Bundle;
import android.view.Menu;
import android.view.MenuItem;
import android.view.View;
import android.widget.AdapterView;
import android.widget.ArrayAdapter;
import android.widget.ListView;
import android.widget.Toast;

import com.example.adapter.MyBase;
import com.example.bean.BannerBean;
import com.example.bean.NewBean;
import com.example.utils.NetUtils;

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

import me.maxwin.view.XListView;

public class MainActivity extends AppCompatActivity {
    private DrawerLayout drawerLayout;
    private XListView xListView;
    private ListView listView;
    private ActionBarDrawerToggle toggle;
    private String urlbanner="http://www.zhaoapi.cn/quarter/getAd";
    private String urldata="http://172.17.8.100/movieApi/movie/v1/findHotMovieList?page=%d&count=%d";
    private MyBase myBase;
    private int mpage;
    private final int COUNT_ITEM=10;

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);
        mpage=1;
        //获取资源id
        findViewById();
        //创建适配器
        myBase = new MyBase(this);
        xListView.setAdapter(myBase);
        xListView.setPullLoadEnable(true);
        xListView.setPullRefreshEnable(true);
        xListView.setXListViewListener(new XListView.IXListViewListener() {
            @Override
            public void onRefresh() {
                mpage=1;
                getRequery();
            }

            @Override
            public void onLoadMore() {
                mpage++;
                getRequery();
            }
        });
        getRequery();

    }
    //获取网络数据
    private void getRequery() {
       if (mpage==1){
           getbannerdata();
           getnewdata();
       }else{
           getnewdata();
       }
    }

    private void getnewdata() {
        NetUtils.getInsanne().getRequery(String.format(urldata,mpage,COUNT_ITEM), NewBean.class, new NetUtils.CallBack<NewBean>() {
            @Override
            public void onsuccess(NewBean o) {
                if (mpage==1){
                    myBase.setdata(o.getResult());
                }else{
                    myBase.adddata(o.getResult());
                }
                xListView.stopLoadMore();
                xListView.stopRefresh();
                if (o.getResult().size()< COUNT_ITEM){
                    xListView.setPullLoadEnable(false);
                }
            }
        });

    }

    private void getbannerdata() {
        NetUtils.getInsanne().getRequery(urlbanner, BannerBean.class, new NetUtils.CallBack<BannerBean>() {
            @Override
            public void onsuccess(BannerBean o) {
                myBase.setmBeanner(o.getData());
            }
        });
    }

    //获取资源id
    public void findViewById(){
        drawerLayout=findViewById(R.id.drawerlayout);
        xListView=findViewById(R.id.xlistview);
        listView=findViewById(R.id.listview);
        //侧滑数据
        indata();
        //左上角按钮
        inirDrawer();
    }
    //左上角按钮
    private void inirDrawer() {
        ActionBar actionBar = getSupportActionBar();
        actionBar.setDisplayHomeAsUpEnabled(true);
        toggle=new ActionBarDrawerToggle(this,drawerLayout,R.string.open,R.string.close);
        toggle.syncState();
        drawerLayout.addDrawerListener(toggle);
    }

    @Override
    public boolean onOptionsItemSelected(MenuItem item) {
        if (toggle.onOptionsItemSelected(item)){
            return true;
        }
        return super.onOptionsItemSelected(item);
    }
    //侧滑数据
    private void indata() {
        final List<String> list = new ArrayList<>();
        list.add("新浪");
        list.add("腾讯");
        list.add("搜狐");
        list.add("头条");
        listView.setAdapter(new ArrayAdapter<String>(this,android.R.layout.simple_list_item_1,list));
        listView.setOnItemClickListener(new AdapterView.OnItemClickListener() {
            @Override
            public void onItemClick(AdapterView<?> parent, View view, int position, long id) {
                Toast.makeText(MainActivity.this,list.get(position),Toast.LENGTH_SHORT).show();
            }
        });
    }
}

工具类

package com.example.utils;

import android.annotation.SuppressLint;
import android.content.Context;
import android.net.ConnectivityManager;
import android.net.NetworkInfo;
import android.os.AsyncTask;

import com.google.gson.Gson;

import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStream;
import java.io.InputStreamReader;
import java.net.HttpURLConnection;

import java.net.URL;


public class NetUtils {
    private static NetUtils insanne;
    private Gson gson;
    public NetUtils() {
        gson=new Gson();
    }

    public static NetUtils getInsanne() {
        if (insanne==null){
            insanne=new NetUtils();
        }
        return insanne;
    }
    //接口
    public interface  CallBack<T>{
        void onsuccess(T t);
    }
    //回调
    @SuppressLint("StaticFieldLeak")
    public  void getRequery(String urldata, final Class clazz, final CallBack callBack){
        new AsyncTask<String,Void,Object>(){
            @Override
            protected Object doInBackground(String... strings) {
                return getRequery(strings[0],clazz);
            }
            @Override
            protected void onPostExecute(Object o) {
                callBack.onsuccess(o);
            }
        }.execute(urldata);
    }
    //解析
    public  <E> E getRequery(String urldata,Class clazz){
        String requery = getRequery(urldata);
        return (E) gson.fromJson(requery,clazz);
    }
    //获取网络数据
    public String getRequery(String urldata){
        String s ="";
        try {
            URL url = new URL(urldata);
            HttpURLConnection urlConnection = (HttpURLConnection) url.openConnection();
            urlConnection.setRequestMethod("GET");
            urlConnection.setReadTimeout(5000);
            urlConnection.setConnectTimeout(5000);
            int responseCode = urlConnection.getResponseCode();
            if (responseCode==200){
                 s = getStrarm2String(urlConnection.getInputStream());
            }

        } catch (Exception e) {
            e.printStackTrace();
        }
        return s;
    }
//转换自节流
    private String getStrarm2String(InputStream inputStream) throws IOException {
        StringBuilder builder = new StringBuilder();
        BufferedReader br= new BufferedReader(new InputStreamReader(inputStream));
        for (String tmp=br.readLine();tmp!=null;tmp=br.readLine()){
            builder.append(tmp);
        }
        return builder.toString();
    }

    //判断是否有网络
    public boolean hasnetwork(Context context){
        ConnectivityManager connectivityManager = (ConnectivityManager) context.getSystemService(context.CONNECTIVITY_SERVICE);
        NetworkInfo activeNetworkInfo = connectivityManager.getActiveNetworkInfo();
        return activeNetworkInfo!=null&&activeNetworkInfo.isAvailable();
    }
}

Baseadapter

package com.example.adapter;

import android.content.Context;
import android.os.Handler;
import android.os.Message;
import android.support.v4.view.ViewPager;
import android.view.LayoutInflater;
import android.view.View;
import android.view.ViewGroup;
import android.widget.BaseAdapter;
import android.widget.ImageView;
import android.widget.TextView;

import com.example.bean.BannerBean;
import com.example.bean.NewBean;
import com.example.week_02_02.R;
import com.nostra13.universalimageloader.core.ImageLoader;

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


public class MyBase extends BaseAdapter {
    private static final int ITEM_COUNT = 2;
    private static final int BANNER_TYPE = 0;
    private static final int DATA_TYPE = 1;
    private Context context;
    private List<BannerBean.DataBean> mBeanner;
    private List<NewBean.ResultBean> mData;

    public MyBase(Context context) {
        this.context = context;
        mBeanner = new ArrayList<>();
        mData = new ArrayList<>();
    }

    //添加beanner数据
    public void setmBeanner(List<BannerBean.DataBean> beanner) {
        mBeanner.clear();
        if (beanner != null) {
            mBeanner.addAll(beanner);
        }
        notifyDataSetChanged();
    }

    //下拉刷新新闻数据
    public void setdata(List<NewBean.ResultBean> data) {
        mData.clear();
        if (data != null) {
            mData.addAll(data);
        }
        notifyDataSetChanged();
    }

    //上拉加载新闻数据
    public void adddata(List<NewBean.ResultBean> data) {
        if (data != null) {
            mData.addAll(data);
        }
        notifyDataSetChanged();
    }
    //返回条目种类总数
    @Override
    public int getViewTypeCount() {
        return ITEM_COUNT;
    }
    //返回条目样式
    @Override
    public int getItemViewType(int position) {
        return position == 0 && hasbenner() ? BANNER_TYPE : DATA_TYPE;
    }

    //判断banner是否有数据
    private boolean hasbenner() {
        return mBeanner.size() > 0;
    }

    @Override
    public int getCount() {
        return mData.size() + (hasbenner() ? 1 : 0);
    }

    @Override
    public NewBean.ResultBean getItem(int position) {
        return mData.get(hasbenner() ? position - 1 : position);
    }

    @Override
    public long getItemId(int position) {
        return position;
    }

    @Override
    public View getView(int position, View convertView, ViewGroup parent) {

        if (getItemViewType(position) == BANNER_TYPE) {
            BannerViewHolder holder;
            if (convertView == null) {
                convertView = LayoutInflater.from(context).inflate(R.layout.banneritem, parent, false);
                holder = new BannerViewHolder(convertView);
            } else {
                holder = (BannerViewHolder) convertView.getTag();
            }
            holder.setdata(mBeanner);
        } else {
            DataViewHolder holder;
            if (convertView == null) {
                convertView = LayoutInflater.from(context).inflate(R.layout.dataitem, parent, false);
                holder = new DataViewHolder(convertView);
            } else {
                holder = (DataViewHolder) convertView.getTag();
            }
            holder.setdata(getItem(position));
        }
        return convertView;
    }

    class BannerViewHolder {
        ViewPager viewPager;
        //handler无线轮播
        private Handler handler = new Handler() {
            @Override
            public void handleMessage(Message msg) {
                //设置viewpager当前位置
                viewPager.setCurrentItem(viewPager.getCurrentItem() + 1);
                //延时发送
                handler.sendEmptyMessageDelayed(0, 2000);
            }
        };

        public BannerViewHolder(View convertView) {
            viewPager = convertView.findViewById(R.id.viewpager);
            convertView.setTag(this);
        }

        public void setdata(List<BannerBean.DataBean> mBeanner) {
            //删除handler
            handler.removeCallbacksAndMessages(null);
            //创建适配器
            MypageAdapter mypageAdapter = new MypageAdapter(context, mBeanner);
            viewPager.setAdapter(mypageAdapter);
            //设置viewpager默认显示页
            viewPager.setCurrentItem(viewPager.getAdapter().getCount() / 2);
            //折行handler
            handler.sendEmptyMessageDelayed(0, 2000);

        }
    }

    class DataViewHolder {
        TextView name, summary;
        ImageView imageView;

        public DataViewHolder(View convertView) {
            name = convertView.findViewById(R.id.name);
            summary = convertView.findViewById(R.id.summary);
            imageView = convertView.findViewById(R.id.image);
            convertView.setTag(this);
        }

        public void setdata(NewBean.ResultBean item) {
            name.setText(item.getName());
            summary.setText(item.getSummary());
            //图片设置
            ImageLoader.getInstance().displayImage(item.getImageUrl(), imageView);
        }
    }
}

pageadapter


    package com.example.adapter;

import android.content.Context;
import android.support.annotation.NonNull;
import android.support.v4.view.PagerAdapter;
import android.view.View;
import android.view.ViewGroup;
import android.widget.ImageView;

import com.example.bean.BannerBean;
import com.nostra13.universalimageloader.core.ImageLoader;

import java.util.List;

public class MypageAdapter extends PagerAdapter {
    private Context context;
    private List<BannerBean.DataBean> list;

    public MypageAdapter(Context context, List<BannerBean.DataBean> list) {
        this.context = context;
        this.list = list;
    }

    @Override
    public int getCount() {
        return 5000;
    }

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

    @NonNull
    @Override
    public Object instantiateItem(@NonNull ViewGroup container, int position) {
        //创建imageview
        ImageView imageView = new ImageView(context);
        imageView.setScaleType(ImageView.ScaleType.FIT_XY);
        ImageLoader.getInstance().displayImage(list.get(position%list.size()).hasico(),imageView);
        container.addView(imageView);
        return imageView;
    }

    @Override
    public void destroyItem(@NonNull ViewGroup container, int position, @NonNull Object object) {
        container.removeView((View) object);
    }
}


bean类

package com.example.bean;

import java.util.List;

public class BannerBean {


    private String msg;
    private String code;
    private List<DataBean> data;

    public String getMsg() {
        return msg;
    }

    public void setMsg(String msg) {
        this.msg = msg;
    }

    public String getCode() {
        return code;
    }

    public void setCode(String code) {
        this.code = code;
    }

    public List<DataBean> getData() {
        return data;
    }

    public void setData(List<DataBean> data) {
        this.data = data;
    }

    public static class DataBean {
        private int aid;
        private String createtime;
        private String icon;
        private Object productId;
        private String title;
        private int type;
        private String url;
        public String hasico(){
            return icon.replace("https","http");
        }
        public int getAid() {
            return aid;
        }

        public void setAid(int aid) {
            this.aid = aid;
        }

        public String getCreatetime() {
            return createtime;
        }

        public void setCreatetime(String createtime) {
            this.createtime = createtime;
        }

        public String getIcon() {
            return icon;
        }

        public void setIcon(String icon) {
            this.icon = icon;
        }

        public Object getProductId() {
            return productId;
        }

        public void setProductId(Object productId) {
            this.productId = productId;
        }

        public String getTitle() {
            return title;
        }

        public void setTitle(String title) {
            this.title = title;
        }

        public int getType() {
            return type;
        }

        public void setType(int type) {
            this.type = type;
        }

        public String getUrl() {
            return url;
        }

        public void setUrl(String url) {
            this.url = url;
        }
    }
}

package com.example.bean;

import java.util.List;

public class NewBean {



    private String message;
    private String status;
    private List<ResultBean> result;

    public String getMessage() {
        return message;
    }

    public void setMessage(String message) {
        this.message = message;
    }

    public String getStatus() {
        return status;
    }

    public void setStatus(String status) {
        this.status = status;
    }

    public List<ResultBean> getResult() {
        return result;
    }

    public void setResult(List<ResultBean> result) {
        this.result = result;
    }

    public static class ResultBean {

        private boolean followMovie;
        private int id;
        private String imageUrl;
        private String name;
        private int rank;
        private String summary;

        public boolean isFollowMovie() {
            return followMovie;
        }

        public void setFollowMovie(boolean followMovie) {
            this.followMovie = followMovie;
        }

        public int getId() {
            return id;
        }

        public void setId(int id) {
            this.id = id;
        }

        public String getImageUrl() {
            return imageUrl;
        }

        public void setImageUrl(String imageUrl) {
            this.imageUrl = imageUrl;
        }

        public String getName() {
            return name;
        }

        public void setName(String name) {
            this.name = name;
        }

        public int getRank() {
            return rank;
        }

        public void setRank(int rank) {
            this.rank = rank;
        }

        public String getSummary() {
            return summary;
        }

        public void setSummary(String summary) {
            this.summary = summary;
        }
    }
}

布局

<?xml version="1.0" encoding="utf-8"?>
<android.support.v4.widget.DrawerLayout xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:app="http://schemas.android.com/apk/res-auto"
    android:id="@+id/drawerlayout"
    android:layout_width="match_parent"
    android:layout_height="match_parent">

    <android.support.constraint.ConstraintLayout xmlns:android="http://schemas.android.com/apk/res/android"

        xmlns:tools="http://schemas.android.com/tools"
        android:layout_width="match_parent"
        android:layout_height="match_parent"
        tools:context=".MainActivity">
        <me.maxwin.view.XListView
            android:id="@+id/xlistview"
            android:layout_width="0dp"
            android:layout_height="0dp"
            app:layout_constraintLeft_toLeftOf="parent"
            app:layout_constraintRight_toRightOf="parent"
            app:layout_constraintTop_toTopOf="parent"
            app:layout_constraintBottom_toBottomOf="parent"/>


    </android.support.constraint.ConstraintLayout>
    <ListView
        android:id="@+id/listview"
        android:layout_width="200dp"
        android:layout_height="match_parent"
        android:layout_gravity="left"
        android:background="@android:color/white"
        />
</android.support.v4.widget.DrawerLayout>
<?xml version="1.0" encoding="utf-8"?>
<android.support.constraint.ConstraintLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:layout_width="match_parent"
    android:layout_height="wrap_content"
    xmlns:app="http://schemas.android.com/apk/res-auto">
    <android.support.v4.view.ViewPager
        android:id="@+id/viewpager"
        android:layout_width="0dp"
        android:layout_height="200dp"
        app:layout_constraintTop_toTopOf="parent"
        app:layout_constraintRight_toRightOf="parent"
        app:layout_constraintLeft_toLeftOf="parent"
        app:layout_constraintBottom_toBottomOf="parent"/>
</android.support.constraint.ConstraintLayout>
<?xml version="1.0" encoding="utf-8"?>
<android.support.constraint.ConstraintLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:layout_width="match_parent"
    android:layout_height="wrap_content"
    xmlns:app="http://schemas.android.com/apk/res-auto"
    android:padding="10dp">

    <ImageView
        android:id="@+id/image"
        android:layout_width="160dp"
        android:layout_height="100dp"
        app:layout_constraintBottom_toBottomOf="parent"
        app:layout_constraintLeft_toLeftOf="parent"
        app:layout_constraintTop_toTopOf="parent" />
    <TextView
        android:id="@+id/name"
        android:layout_width="0dp"
        android:layout_height="wrap_content"
        app:layout_constraintRight_toRightOf="parent"
        app:layout_constraintTop_toTopOf="parent"
       app:layout_constraintLeft_toRightOf="@id/image"/>
    <TextView
        android:id="@+id/summary"
        android:layout_width="0dp"
        android:layout_height="wrap_content"
        app:layout_constraintRight_toRightOf="parent"
       app:layout_constraintBottom_toBottomOf="parent"
        app:layout_constraintLeft_toRightOf="@id/image"
        android:maxLines="3"
        android:ellipsize="end"/>
</android.support.constraint.ConstraintLayout>

猜你喜欢

转载自blog.csdn.net/ren18234073466/article/details/83927599