Android Convenient无限轮播

        首先还是导依赖包

    compile 'com.bigkoo:convenientbanner:2.0.5'
    compile 'com.jwenfeng.pulltorefresh:library:1.0.3'
    compile project(':library')
       主页面布局
<?xml version="1.0" encoding="utf-8"?>
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    xmlns:app="http://schemas.android.com/apk/res-auto">

    <com.bigkoo.convenientbanner.ConvenientBanner
        xmlns:app="http://schemas.android.com/apk/res-auto"
        android:layout_width="match_parent"
        android:layout_height="230dp"
        android:id="@+id/banner"
        android:layout_alignParentTop="true"
        app:canLoop="true"
       />
    <com.handmark.pulltorefresh.library.PullToRefreshListView
        android:layout_width="match_parent"
        android:layout_height="match_parent"
        android:id="@+id/pu_lv"
        android:layout_below="@+id/banner">
    </com.handmark.pulltorefresh.library.PullToRefreshListView>
</RelativeLayout>
      ListView的Item布局

<?xml version="1.0" encoding="utf-8"?>
<RelativeLayout
    xmlns:android="http://schemas.android.com/apk/res/android"
    android:orientation="vertical" android:layout_width="match_parent"
    android:layout_height="match_parent">
    <ImageView
        android:layout_width="100dp"
        android:layout_height="100dp"
        android:id="@+id/img"
        android:layout_alignParentLeft="true"
        android:layout_marginTop="10dp"
        android:layout_marginLeft="10dp"
        />
    <TextView
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_toRightOf="@id/img"
        android:layout_marginTop="30dp"
        android:layout_marginLeft="10dp"
        android:id="@+id/titles"
        android:text="标题"
        />
    <TextView
        android:id="@+id/desc"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_toRightOf="@id/img"
        android:layout_below="@id/titles"
        android:layout_marginTop="30dp"
        android:layout_marginLeft="10dp"
        android:text="描述"
        />
    <TextView
        android:id="@+id/times"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_alignParentRight="true"
        android:layout_below="@id/titles"
        android:layout_marginTop="30dp"
        android:layout_marginRight="20dp"
        android:text="时间"
        />
</RelativeLayout>
       网络接口类
package com.example.app6_longbolistview;

/**
 * Created by ZhangTAO on 2017/9/15.
 */

public class Url {
    public static String path = "http://api.tianapi.com/apple/?key=c8bb8de75b2287a6c6c390c50afb21e1";
}
   主页面代码

package com.example.app6_longbolistview;
import android.content.Context;
import android.os.AsyncTask;
import android.os.Bundle;
import android.os.Handler;
import android.os.Message;
import android.support.v7.app.AppCompatActivity;
import android.util.Log;
import android.view.View;
import android.widget.ImageView;
import android.widget.ListView;
import android.widget.Toast;
import com.bigkoo.convenientbanner.ConvenientBanner;
import com.bigkoo.convenientbanner.holder.CBViewHolderCreator;
import com.bigkoo.convenientbanner.holder.Holder;
import com.bigkoo.convenientbanner.listener.OnItemClickListener;
import com.google.gson.Gson;
import com.handmark.pulltorefresh.library.PullToRefreshBase;
import com.handmark.pulltorefresh.library.PullToRefreshListView;
import com.nostra13.universalimageloader.core.ImageLoader;
import com.nostra13.universalimageloader.core.ImageLoaderConfiguration;
import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStream;
import java.io.InputStreamReader;
import java.net.HttpURLConnection;
import java.net.MalformedURLException;
import java.net.URL;
import java.util.ArrayList;
import java.util.List;
import Bean.JsonRootBean;
import Bean.Newslist;

public class MainActivity extends AppCompatActivity implements OnItemClickListener{
   //获取控件以及定义变量
    private ConvenientBanner banner;
    private List<String> alist=new ArrayList<>();
    private ImageLoader imageLoader;
    private List<Newslist> datas;
    private ImageView imageView;
    private MyAdapter adapter;
    private PullToRefreshListView lvs;
    private String page = "&num=";
    private int count = 10;
    private Handler ler = new Handler() {
        @Override
        public void handleMessage(Message msg) {
            super.handleMessage(msg);
            if (msg.what == 0x12) {
                for (int i = 0;i < 6;i++) {
                    alist.add(datas.get(i).getPicUrl());
                }
            }
            getinit();
            if (msg.what == 0x11) {
                adapter.setDatas(datas);
                adapter.notifyDataSetChanged();
                lvs.onRefreshComplete();
            }
        }
    };

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);
        init();
        //获取异步对象
        MyTask task = new MyTask();
        //执行异步
        task.execute();
    }
    private void init() {
        //获取控件
        banner = (ConvenientBanner) findViewById(R.id.banner);
        lvs = (PullToRefreshListView) findViewById(R.id.pu_lv);
         //初始化图片加载
        imageLoader = ImageLoader.getInstance();
        imageLoader.init(ImageLoaderConfiguration.createDefault(this));
    }
    private void getinit() {
         //开始自动翻页
        banner.setPages(new CBViewHolderCreator<NetWorkLoacl>() {
            @Override
            public NetWorkLoacl createHolder() {
                return new NetWorkLoacl();
            }
        },alist)
                //设置指示器是否可见
                .setPointViewVisible(true)
                //设置自动切换(同时设置了切换时间间隔)
                .startTurning(2000)
                //设置两个点图片作为翻页指示器,不设置则没有指示器,可以根据自己需求自行配合自己的指示器,不需要圆点指示器可用不设
                .setPageIndicator(new int[]{R.drawable.kong, R.drawable.shi})
                //设置指示器的方向(左、中、右)
                .setPageIndicatorAlign(ConvenientBanner.PageIndicatorAlign.ALIGN_PARENT_RIGHT)
                //设置点击监听事件
                .setOnItemClickListener(this)
                //设置手动影响(设置了该项无法手动切换)
                .setManualPageable(true);
    }

    @Override
    public void onItemClick(int position) {
        Toast.makeText(MainActivity.this,"position:"+position,Toast.LENGTH_SHORT).show();
    }
    private class NetWorkLoacl implements Holder<String> {

        @Override
        public View createView(Context context) {
             //建立一个ImageView
            imageView = new ImageView(context);
            imageView.setScaleType(ImageView.ScaleType.FIT_XY);
            return imageView;
        }

        @Override
        public void UpdateUI(Context context, int position, String data) {
                 //获取路径并图
                imageLoader.getInstance().displayImage(data,imageView);
        }
    }
    private boolean getDatamore(final String url) {
                boolean flag = true;
                       try {
                           URL path = new URL(url);
                           HttpURLConnection connection = (HttpURLConnection) path.openConnection();
                           connection.setRequestMethod("GET");
                           connection.setConnectTimeout(5000);
                           connection.setReadTimeout(5000);
                           int code = connection.getResponseCode();
                           if (code == 200) {
                               InputStream stream = connection.getInputStream();
                               String json = streamToString(stream,"utf-8");
//                               Log.d("zzz",json.toString());
                               Gson gs = new Gson();
                               JsonRootBean fromJson = gs.fromJson(json.toString(), JsonRootBean.class);
                               datas = fromJson.getNewslist();
//                              Log.d("aaa",datas.toString());
                           }else {
                               flag = false;
                           }
                       } catch (MalformedURLException e) {
                           e.printStackTrace();
                       } catch (IOException e) {
                           e.printStackTrace();
                       }
        return flag;
    }
    private String streamToString(InputStream input,String charset) {
        String con = null;
        InputStreamReader inputStreamReader = new InputStreamReader(input);
        StringBuilder builder = new StringBuilder();
        BufferedReader reader = new BufferedReader(inputStreamReader);
        try {
            while ((con = reader.readLine()) != null) {
                builder.append(con);
            }
                return builder.toString();
        } catch (IOException e) {
            e.printStackTrace();
        }
         return null;
    }
    class MyTask extends AsyncTask<String,Integer,String> {
        @Override
        protected String doInBackground(String... strings) {
            getDatamore(Url.path+page+count);
            return null;
        }

        @Override
        protected void onPostExecute(String s) {
            super.onPostExecute(s);
            adapter = new MyAdapter(MainActivity.this,datas);
            lvs.setAdapter(adapter);
            Message message = new Message();
            message.what = 0x12;
            ler.sendMessage(message);
            lvs.setMode(PullToRefreshBase.Mode.BOTH);
            lvs.setOnRefreshListener(new PullToRefreshBase.OnRefreshListener2<ListView>() {
                @Override
                public void onPullDownToRefresh(PullToRefreshBase<ListView> refreshView) {
                    lvs.postDelayed(new Runnable() {
                        @Override
                        public void run() {
                            adapter.notifyDataSetChanged();
                            lvs.onRefreshComplete();
                        }
                    },2000);
                }

                @Override
                public void onPullUpToRefresh(PullToRefreshBase<ListView> refreshView) {
                     new Thread(new Runnable() {
                         @Override
                         public void run() {
                            count = count+10;
                             getDatamore(Url.path+page+count);
                             Log.d("zzz",Url.path+page+count);
                             Message message = new Message();
                             message.what = 0x11;
                             ler.sendMessageDelayed(message,2000);
                         }
                     }).start();
                }
            });
        }
    }
}
   设置适配器

package com.example.app6_longbolistview;

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;

import Bean.Newslist;

/**
 * Created by ZhangTAO on 2017/9/15.
 */

public class MyAdapter extends BaseAdapter{
    Context context;
    List<Newslist> datas;

    public MyAdapter(Context context, List<Newslist> datas) {
        this.context = context;
        this.datas = datas;
    }
    public List<Newslist> getDatas() {
        return datas;
    }

    public void setDatas(List<Newslist> datas) {
        this.datas = datas;
    }
    @Override
    public int getCount() {
        return datas.size();
    }

    @Override
    public Object getItem(int i) {
        return datas.get(i);
    }

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

    @Override
    public View getView(int i, View view, ViewGroup viewGroup) {
       ViewHodler hodler = null;
        if (view == null) {
            view = View.inflate(context, R.layout.xlist_item, null);
            hodler = new ViewHodler();
            hodler.img = view.findViewById(R.id.img);
            hodler.title = view.findViewById(R.id.titles);
            hodler.desc = view.findViewById(R.id.desc);
            hodler.time = view.findViewById(R.id.times);
            view.setTag(hodler);
        }else {
            hodler = (ViewHodler) view.getTag();
        }
        ImageLoader.getInstance().displayImage(datas.get(i).getPicUrl(),hodler.img);
        hodler.title.setText(datas.get(i).getTitle());
        hodler.desc.setText(datas.get(i).getDescription());
        hodler.time.setText(datas.get(i).getCtime());
        return view;
    }
    static class ViewHodler {
        ImageView img;
        TextView title;
        TextView desc;
        TextView time;
    }
}


                
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值