Banner轮播 + XlistView 网络获取数据
来源:互联网 发布:世界征服者3 全将 数据 编辑:程序博客网 时间:2024/06/04 17:50
需要的依赖:
compile 'com.youth.banner:banner:1.4.9'compile project(':mylibrary') compile 'com.google.code.gson:gson:2.2.4'compile 'com.nostra13.universalimageloader:universal-image-loader:1.9.5'主类布局为ViewPager 和RadioGroup 实现 点击切换ViewPager的页面:
<?xml version="1.0" encoding="utf-8"?><LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" xmlns:app="http://schemas.android.com/apk/res-auto" xmlns:tools="http://schemas.android.com/tools" android:layout_width="match_parent" android:layout_height="match_parent" tools:context="com.bwei.ssp.zk3_lx.MainActivity" android:orientation="vertical"> <android.support.v4.view.ViewPager android:id="@+id/vp" android:layout_width="match_parent" android:layout_height="0dp" android:layout_weight="9" /> <RadioGroup android:layout_width="match_parent" android:layout_height="0dp" android:layout_weight="1" android:orientation="horizontal" android:id="@+id/rg" android:gravity="center" > <RadioButton android:layout_width="0dp" android:layout_height="wrap_content" android:text="首页" android:id="@+id/b1" android:button="@null" android:layout_weight="1" /> <RadioButton android:layout_width="0dp" android:layout_height="wrap_content" android:text="发现" android:id="@+id/b2" android:layout_weight="1" android:button="@null" /> <RadioButton android:layout_width="0dp" android:layout_height="wrap_content" android:text="社区" android:id="@+id/b3" android:button="@null" android:layout_weight="1" /> <RadioButton android:layout_width="0dp" android:layout_height="wrap_content" android:text="我的" android:id="@+id/b4" android:button="@null" android:layout_weight="1" /> </RadioGroup></LinearLayout>
主类 为ViewPager加载界面 并为RadioGroup 绑定:
package com.bwei.ssp.zk3_lx;import android.os.Bundle;import android.support.v4.app.Fragment;import android.support.v4.app.FragmentManager;import android.support.v4.app.FragmentPagerAdapter;import android.support.v4.view.ViewPager;import android.support.v7.app.AppCompatActivity;import android.widget.RadioGroup;import com.bwei.ssp.zk3_lx.Fragment.F1;import com.bwei.ssp.zk3_lx.Fragment.F2;import com.bwei.ssp.zk3_lx.Fragment.F3;import com.bwei.ssp.zk3_lx.Fragment.F4;import java.util.ArrayList;import java.util.List;public class MainActivity extends AppCompatActivity implements RadioGroup.OnCheckedChangeListener { private ViewPager vp; private RadioGroup rg; private List<Fragment> flist; private Madapter madapter; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); vp = (ViewPager) findViewById(R.id.vp); rg = (RadioGroup) findViewById(R.id.rg); //初始化控件 flist = new ArrayList<>(); flist.add(new F1()); flist.add(new F2()); flist.add(new F3()); flist.add(new F4()); //为ViewPager 设置数据 madapter = new Madapter(getSupportFragmentManager()); vp.setAdapter(madapter); //添加适配器 rg.setOnCheckedChangeListener(this); //为 RadioGoup设置监听事件 根据点击加载不同的页面 } @Override public void onCheckedChanged(RadioGroup radioGroup, int checkedId) { switch (checkedId){ case R.id.b1: vp.setCurrentItem(0); //设置ViewPage的默认页面 break; case R.id.b2: vp.setCurrentItem(1); break; case R.id.b3: vp.setCurrentItem(2); break; case R.id.b4: vp.setCurrentItem(3); break; } } private class Madapter extends FragmentPagerAdapter{ public Madapter(FragmentManager fm) { super(fm); } @Override public Fragment getItem(int position) { return flist.get(position); } //返回的为页面集合的长度 @Override public int getCount() { return flist.size(); } }}
因为获取的数据在网络上所以要创建网络获取数据类 和网络图片框架
网络获取数据类:
package com.bwei.ssp.mylibrary;import android.graphics.Bitmap;import android.graphics.BitmapFactory;import android.util.Log;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;/** * Created by lenovo on 2017/10/8. */public class Tools { private static String tag ="ssp"; public static String getJson(String url){ try { URL url1 = new URL(url); HttpURLConnection urlConnection = (HttpURLConnection) url1.openConnection(); int responseCode = urlConnection.getResponseCode(); if(responseCode==200){ InputStream inputStream = urlConnection.getInputStream(); StringBuilder stringBuilder = new StringBuilder(); BufferedReader bufferedReader = new BufferedReader(new InputStreamReader(inputStream)); String temp=""; while((temp=bufferedReader.readLine())!=null){ stringBuilder.append(temp); } String str = stringBuilder.toString(); return str; }else{ Log.e(tag, responseCode+"" ); } } catch (MalformedURLException e) { e.printStackTrace(); } catch (IOException e) { e.printStackTrace(); } return ""; } public static Bitmap getBitmap(String Burl){ try { URL url = new URL(Burl); HttpURLConnection urlConnection = (HttpURLConnection) url.openConnection(); int responseCode = urlConnection.getResponseCode(); if(responseCode==200){ InputStream inputStream = urlConnection.getInputStream(); Bitmap bitmap = BitmapFactory.decodeStream(inputStream); return bitmap; }else{ Log.e(tag, responseCode+"" ); } } catch (MalformedURLException e) { e.printStackTrace(); } catch (IOException e) { e.printStackTrace(); } return null; }}图片框架:
package com.bwei.ssp.zk3_lx;import android.app.Application;import com.nostra13.universalimageloader.core.ImageLoader;import com.nostra13.universalimageloader.core.ImageLoaderConfiguration;/** * Created by lenovo on 2017/10/18. */public class MApp extends Application { @Override public void onCreate() { super.onCreate(); ImageLoaderConfiguration build = new ImageLoaderConfiguration.Builder(this).build(); //创建网络图片框架 需要在清单文件家name属性 ImageLoader.getInstance().init(build); }}Banner 为封装好的类可以直接实现轮播 但需要掉它的网络获取图片的方法:
package com.bwei.ssp.zk3_lx;import android.content.Context;import android.widget.ImageView;import com.youth.banner.loader.ImageLoader;/** * Created by lenovo on 2017/10/18. */public class BennerLoder extends ImageLoader { @Override public void displayImage(Context context, Object obj, ImageView imageView) { com.nostra13.universalimageloader.core.ImageLoader imageLoaderInstance = com.nostra13.universalimageloader.core.ImageLoader.getInstance(); imageLoaderInstance.displayImage((String) obj, imageView); //轮播必须实图片的框架类从网络获取图片 }}要在ViewPage的第一个界面做轮播图和XlistView 获取数据和上下拉刷新 布局:banner的高看情况自己设定<?xml version="1.0" encoding="utf-8"?><LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" android:layout_width="match_parent" android:layout_height="match_parent" android:orientation="vertical"> <com.youth.banner.Banner android:layout_width="match_parent" android:layout_height="150dp" android:id="@+id/banner" /> <com.bwei.ssp.mylibrary.View.XListView android:layout_width="match_parent" android:layout_height="0dp" android:layout_weight="1" android:id="@+id/xlv" ></com.bwei.ssp.mylibrary.View.XListView></LinearLayout>页面的逻辑代码package com.bwei.ssp.zk3_lx.Fragment;import android.os.AsyncTask;import android.os.Bundle;import android.support.annotation.Nullable;import android.support.v4.app.Fragment;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.bwei.ssp.mylibrary.Tools;import com.bwei.ssp.mylibrary.View.XListView;import com.bwei.ssp.zk3_lx.Bean;import com.bwei.ssp.zk3_lx.BennerLoder;import com.bwei.ssp.zk3_lx.R;import com.google.gson.Gson;import com.nostra13.universalimageloader.core.ImageLoader;import com.youth.banner.Banner;import java.util.ArrayList;import java.util.List;/** * Created by lenovo on 2017/10/18. */public class F1 extends Fragment implements XListView.IXListViewListener { private Banner banner; private XListView xlv; private String url="http://api.kkmh.com/v1/daily/comic_lists/0?since=0&gender=0&sa_event=eyJwcm9qZWN0Ijoia3VhaWthbl9hcHAiLCJ0aW1lIjoxNDg3NzQyMjQwNjE1LCJwcm9wZXJ0aWVzIjp7IkhvbWVwYWdlVGFiTmFtZSI6IueDremXqCIsIlZDb21tdW5pdHlUYWJOYW1lIjoi54Ot6ZeoIiwiJG9zX3ZlcnNpb24iOiI0LjQuMiIsIkdlbmRlclR5cGUiOiLlpbPniYgiLCJGcm9tSG9tZXBhZ2VUYWJOYW1lIjoi54Ot6ZeoIiwiJGxpYl92ZXJzaW9uIjoiMS42LjEzIiwiJG5ldHdvcmtfdHlwZSI6IldJRkkiLCIkd2lmaSI6dHJ1ZSwiJG1hbnVmYWN0dXJlciI6ImJpZ25veCIsIkZyb21Ib21lcGFnZVVwZGF0ZURhdGUiOjAsIiRzY3JlZW5faGVpZ2h0IjoxMjgwLCJIb21lcGFnZVVwZGF0ZURhdGUiOjAsIlByb3BlcnR5RXZlbnQiOiJSZWFkSG9tZVBhZ2UiLCJGaW5kVGFiTmFtZSI6IuaOqOiNkCIsImFidGVzdF9ncm91cCI6MTEsIiRzY3JlZW5fd2lkdGgiOjcyMCwiJG9zIjoiQW5kcm9pZCIsIlRyaWdnZXJQYWdlIjoiSG9tZVBhZ2UiLCIkY2FycmllciI6IkNoaW5hIE1vYmlsZSIsIiRtb2RlbCI6IlZQaG9uZSIsIiRhcHBfdmVyc2lvbiI6IjMuNi4yIn0sInR5cGUiOiJ0cmFjayIsImRpc3RpbmN0X2lkIjoiQTo2YWRkYzdhZTQ1MjUwMzY1Iiwib3JpZ2luYWxfaWQiOiJBOjZhZGRjN2FlNDUyNTAzNjUiLCJldmVudCI6IlJlYWRIb21lUGFnZSJ9"; private List<Bean.DataBean.ComicsBean> jlist ; ArrayList<String> list = new ArrayList<>(); private ImageLoader instance; private Madapter madapter; @Nullable @Override public View onCreateView(LayoutInflater inflater, @Nullable ViewGroup container, @Nullable Bundle savedInstanceState) { View v = View.inflate(getActivity(), R.layout.f1, null); banner = (Banner) v.findViewById(R.id.banner); xlv = (XListView)v.findViewById(R.id.xlv); //初始化组件 instance = ImageLoader.getInstance(); //获取图片框架对象 xlv.setXListViewListener(this); xlv.setPullLoadEnable(true); //设置监听 并设置xlistview的模式 madapter = new Madapter(); //创建适配器 initData(); //加载网络获取数据工具类 return v; } private void initData() { new MAsazyTask().execute(url); } @Override public void onRefresh() { list.clear(); initData(); xListViewUIComplete();//完成ui } private void xListViewUIComplete() { //让刷新头消失 XListView xListView; xlv.stopRefresh(); //让加载更多文字消失 xlv.stopLoadMore(); //设置刷新时间为"刚刚" xlv.setRefreshTime("刚刚"); } @Override public void onLoadMore() { initData(); xListViewUIComplete(); } private class MAsazyTask extends AsyncTask<String,Void,String>{ @Override protected String doInBackground(String... strings) { return Tools.getJson(strings[0]); } @Override protected void onPostExecute(String s) { super.onPostExecute(s); Gson gson = new Gson(); Bean bean = gson.fromJson(s, Bean.class); jlist = bean.getData().getComics(); //获取网络数据的集合 for (int i = 0; i <jlist.size() ; i++) { list.add( jlist.get(i).getCover_image_url()); //调取图片地址并把数据添加到集合 } banner.setImageLoader(new BennerLoder()); //加载图片框架类 banner.setImages(list); //为baner加载图片 banner.start(); //开始执行 xlv.setAdapter(madapter); //为 xlisiview加载适配器 } } private class Madapter extends BaseAdapter{ @Override public int getCount() { return jlist.size(); } @Override public Object getItem(int i) { return jlist.get(i); } @Override public long getItemId(int i) { return i; } @Override public View getView(int i, View view, ViewGroup viewGroup) { view =View.inflate(getActivity(),R.layout.item,null); TextView tv =(TextView) view.findViewById(R.id.tv); TextView tv1 =(TextView) view.findViewById(R.id.tv1); TextView tv2 =(TextView) view.findViewById(R.id.tv2); ImageView ig =(ImageView) view.findViewById(R.id.ig); tv.setText(jlist.get(i).getTitle()); tv1.setText("作者:"); tv2.setText(jlist.get(i).getLabel_text()); instance.displayImage(jlist.get(i).getCover_image_url(),ig); return view; } }}
阅读全文
0 0
- Banner轮播 + XlistView 网络获取数据
- xlistview+banner无限轮播
- 网络请求数据 Banner轮播
- XlistView刷新加载和Banner轮播
- 三级缓存,banner轮播,判断网络
- Banner 网络图片无限轮播 ImageLoader
- 网络请求数据 banner图片轮播和list请求数据
- 无线轮播+GET网络请求数据+xlistview+多条目加载
- XListView+ImageLoader+AsyncTask+网络获取数据综合
- 关于banner获取网络图片设置自动轮播
- 轮播和Xlistview
- 无限轮播+XListView
- 轮播+跳转+xlistview
- handle发送get和post请求网络数据+多条目加载+banner+xlistview+TabLayout
- banner图片轮播
- 广告轮播Banner
- banner轮播
- 首页轮播Banner
- NetWordUtils
- Linux 通过 expect 实现 tenlnet 自动登录
- Java中Runnable和Thread以及Callable的区别
- Linux中的函数
- iPhoneX的带有TabBar的画面跳转时,位置跳动的问题
- Banner轮播 + XlistView 网络获取数据
- 购物车)
- windows下的基于Eclipse的STM32开发调试环境搭建
- Html5做App(webapp)中界面适配的问题总结
- MainActivity
- 第一个简单的jQuery程序
- 判断服务是否在运行
- MApp
- 关于Uncaught TypeError: type is not a function at HTMLAnchorElement.onclick (indexjsp:71)的解决