Android Convenient无限轮播
来源:互联网 发布:mac os 清理 编辑:程序博客网 时间:2024/06/07 04:43
首先还是导依赖包
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; }}
阅读全文
0 0
- Android Convenient无限轮播
- Android无限广告轮播
- Android无限广告轮播
- Android无限广告轮播
- Android ViewPager实现广告无限轮播
- Android viewpager实现无限循环轮播
- Android无限循环轮播广告位Banner
- Android无限循环轮播广告位Banner
- Android中图片的无限轮播
- android 无限轮播的广告位
- Android 无限轮播ViewPager的实现
- Android自定义控件实现无限轮播
- Android无限循环轮播广告位Banner
- viewpager无限轮播
- 无限轮播加点
- Viewpager无限轮播
- 无限轮播
- 图片无限轮播
- python
- HDU1032
- 排序算法(二):希尔排序(最小增量排序)
- TCP/IP、HTTP协议的区别
- mabits批量insert、update、select
- Android Convenient无限轮播
- python、Jmeter接口自动化框架、支付测试
- Spark---性能优化之开发篇
- 在lnmp上运行和搭建laravel项目
- 深度优先搜索和广度优先搜索的区别
- 数据库学习——排序
- Splunk-SDK-Python学习
- CSS控制文字只显示一行,超出部分显示省略号
- ContentProvider分析(一)之TelephonyProvider的初始化