xlistview网络请求数据以及添加headerview_自动轮播viewpager控件

本文主要是介绍xlistview网络请求数据以及添加headerview_自动轮播viewpager控件,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

主页代码:
package com.bwie.xlistview;import android.content.BroadcastReceiver;
import android.content.Context;
import android.content.Intent;
import android.content.IntentFilter;
import android.net.ConnectivityManager;
import android.net.NetworkInfo;
import android.os.AsyncTask;
import android.os.Bundle;
import android.os.Handler;
import android.os.Message;
import android.support.v4.view.ViewPager;
import android.support.v7.app.AppCompatActivity;
import android.view.View;
import android.widget.ImageView;
import android.widget.LinearLayout;
import android.widget.Toast;import com.bwie.xlistview.ADAPTER.ViewPagerAdapter;
import com.bwie.xlistview.ADAPTER.XlistviewAdapter;
import com.bwie.xlistview.API.API;
import com.bwie.xlistview.BEAN.CartoonInfo;
import com.google.gson.Gson;import java.io.BufferedReader;
import java.io.InputStream;
import java.io.InputStreamReader;
import java.net.HttpURLConnection;
import java.net.URL;
import java.util.ArrayList;
import java.util.List;import imageloader.bwie.com.mylibrary.XListView;public class MainActivity extends AppCompatActivity implements XListView.IXListViewListener, ViewPager.OnPageChangeListener {private XListView xlistview;private XlistviewAdapter xlvadap;private boolean isfresh=false;private int SKIP=0;private networkreceiver receiver;private ViewPager viewpager;private List<String> imageurls=new ArrayList<>();private List<ImageView> imageviews=new ArrayList<>();private LinearLayout linear_dot;private Handler handler=new Handler(){@Overridepublic void handleMessage(Message msg) {super.handleMessage(msg);int currentItem = viewpager.getCurrentItem();if (currentItem>=Integer.MAX_VALUE-1) {currentItem=0;}currentItem++;viewpager.setCurrentItem(currentItem);handler.sendEmptyMessageDelayed(0,1000);}};@Overrideprotected void onCreate(Bundle savedInstanceState) {super.onCreate(savedInstanceState);setContentView(R.layout.activity_main);//注册广播判断网络状态registerNetWorkReceiver();//获取控件initView();initViewPager();initData();}private void initViewPager() {imageurls.add(API.VIEWPAGER_IMAGEURL1);imageurls.add(API.VIEWPAGER_IMAGEURL2);imageurls.add(API.VIEWPAGER_IMAGEURL3);//画点drawDot();ViewPagerAdapter adpater=new ViewPagerAdapter(imageurls,this);viewpager.setAdapter(adpater);//启动轮播handler.sendEmptyMessageDelayed(0,1000);}private void drawDot() {if (imageurls!=null) {for (int i=0;i<imageurls.size();i++){ImageView image=new ImageView(this);if (i==0) {image.setImageResource(R.drawable.red_dot);}else{image.setImageResource(R.drawable.white_dot);}linear_dot.addView(image);imageviews.add(image);}}}private void registerNetWorkReceiver() {if (receiver==null) {receiver = new networkreceiver();}IntentFilter filter=new IntentFilter();filter.addAction(ConnectivityManager.CONNECTIVITY_ACTION);this.registerReceiver(receiver,filter);}private void initData() {new asynctask().execute(API.DATA_URL);}private void initView() {xlistview = (XListView) findViewById(R.id.xlistview);View header = View.inflate(this, R.layout.xlistview_headerview, null);viewpager = header.findViewById(R.id.viewpager);linear_dot = header.findViewById(R.id.linear_dot);xlistview.addHeaderView(header);xlistview.setPullRefreshEnable(true);xlistview.setPullLoadEnable(true);xlistview.setXListViewListener(this);viewpager.setOnPageChangeListener(this);}@Overridepublic void onRefresh() {isfresh=true;if (xlvadap!=null) {xlvadap=null;new asynctask().execute(API.DATA_URL);}}@Overridepublic void onLoadMore() {isfresh=false;SKIP=SKIP+20;String dataUrlSkip = API.DATA_URL_SKIP_FRONT+SKIP+API.DATA_URL_SKIP_AFTER;new asynctask().execute(dataUrlSkip);}@Overridepublic void onPageScrolled(int position, float positionOffset, int positionOffsetPixels) {}@Overridepublic void onPageSelected(int position) {if (imageviews!=null) {for (int i = 0; i < imageviews.size(); i++) {ImageView imageView = imageviews.get(i);if (i==position%imageviews.size()) {imageView.setImageResource(R.drawable.red_dot);}else{imageView.setImageResource(R.drawable.white_dot);}}}}@Overridepublic void onPageScrollStateChanged(int state) {}class asynctask extends AsyncTask<String,Integer,List<String>>{@Overrideprotected List<String> doInBackground(String... strings) {StringBuffer buffer=new StringBuffer();try {URL url=new URL(strings[0]);HttpURLConnection httpurlcon = (HttpURLConnection) url.openConnection();httpurlcon.connect();int responseCode = httpurlcon.getResponseCode();if (200== responseCode) {InputStream inputStream = httpurlcon.getInputStream();BufferedReader reader=new BufferedReader(new InputStreamReader(inputStream));String line=null;while ((line=reader.readLine())!=null) {buffer.append(line);}ParseData(buffer.toString());}} catch (Exception e) {e.printStackTrace();}return null;}private void ParseData(String s) {CartoonInfo cartoonInfo = new Gson().fromJson(s, CartoonInfo.class);final List<CartoonInfo.Book> bookList = cartoonInfo.result.bookList;runOnUiThread(new Runnable() {@Overridepublic void run() {if (bookList!=null) {if (xlvadap==null) {xlvadap = new XlistviewAdapter(MainActivity.this,bookList);xlistview.setAdapter(xlvadap);}else{if (isfresh==false){xlvadap.add(bookList);xlvadap.notifyDataSetChanged();}xlvadap.notifyDataSetChanged();}}}});xlistview.stopLoadMore();xlistview.stopRefresh();}}public  class networkreceiver extends BroadcastReceiver{@Overridepublic void onReceive(Context context, Intent intent) {ConnectivityManager manager = (ConnectivityManager) context.getSystemService(Context.CONNECTIVITY_SERVICE);NetworkInfo networkInfo = manager.getNetworkInfo(ConnectivityManager.TYPE_MOBILE);NetworkInfo networkInfo1 = manager.getNetworkInfo(ConnectivityManager.TYPE_WIFI);if (!networkInfo.isConnected()&&!networkInfo1.isConnected()) {System.out.println("网络已断开");Toast.makeText(context,"网络已断开",Toast.LENGTH_LONG).show();//跳转到系统网络设置页面
//                Intent intent1 =  new Intent(android.provider.Settings.ACTION_WIRELESS_SETTINGS);
//                startActivity(intent1);}else{Toast.makeText(context,"网络已连接",Toast.LENGTH_LONG).show();}}}
}

Xlistview适配器代码:

package com.bwie.xlistview.ADAPTER;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.bwie.xlistview.BEAN.CartoonInfo;
import com.bwie.xlistview.R;
import com.nostra13.universalimageloader.core.ImageLoader;import java.util.List;/*** Created by Administrator on 2017/8/23.*/public class XlistviewAdapter extends BaseAdapter {private Context context;private List<CartoonInfo.Book> list;private static int ITEM_TYPE_COUNT=2;final private static int ITEM_TYPE_A=0;final private static int ITEM_TYPE_B=1;public XlistviewAdapter(Context context, List<CartoonInfo.Book> list) {this.context = context;this.list = list;}public void add(List<CartoonInfo.Book> bookList){list.addAll(bookList);}@Overridepublic int getCount() {return list.size();}@Overridepublic Object getItem(int i) {return list.get(i);}@Overridepublic long getItemId(int i) {return i;}@Overridepublic int getItemViewType(int position) {if (position%2==0) {return ITEM_TYPE_A;}else{return ITEM_TYPE_B;}}@Overridepublic int getViewTypeCount() {return ITEM_TYPE_COUNT;}@Overridepublic View getView(int i, View view, ViewGroup viewGroup) {int itemViewType = getItemViewType(i);ViewHolder viewholder;if (view==null) {viewholder=new ViewHolder();switch (itemViewType){case ITEM_TYPE_A:view=View.inflate(context, R.layout.clistview_itemtype_a,null);view.setTag(viewholder);viewholder.iv=view.findViewById(R.id.iv_a);viewholder.tv=view.findViewById(R.id.tv_a);break;case ITEM_TYPE_B:view=View.inflate(context, R.layout.clistview_itemtype_b,null);view.setTag(viewholder);viewholder.iv=view.findViewById(R.id.iv_b);viewholder.tv=view.findViewById(R.id.tv_b);break;}}else{viewholder= (ViewHolder) view.getTag();}viewholder.tv.setText(list.get(i).name);ImageLoader.getInstance().displayImage(list.get(i).coverImg,viewholder.iv);return view;}class ViewHolder{public ImageView iv;public TextView tv;}
}
viewpager代码:
package com.bwie.xlistview.ADAPTER;import android.content.Context;
import android.support.v4.view.PagerAdapter;
import android.view.View;
import android.view.ViewGroup;
import android.widget.ImageView;import com.nostra13.universalimageloader.core.ImageLoader;import java.util.List;/*** Created by Administrator on 2017/8/24.*/public class ViewPagerAdapter extends PagerAdapter {private List<String> imageurls;private Context context;public ViewPagerAdapter(List<String> imageurls, Context context) {this.imageurls = imageurls;this.context = context;}@Overridepublic int getCount() {return Integer.MAX_VALUE;}@Overridepublic boolean isViewFromObject(View view, Object object) {return view==object;}@Overridepublic void destroyItem(ViewGroup container, int position, Object object) {container.removeView((View) object);}@Overridepublic Object instantiateItem(ViewGroup container, int position) {String imageurl = imageurls.get(position%imageurls.size());ImageView imageview=new ImageView(context);ImageLoader.getInstance().displayImage(imageurl,imageview);container.addView(imageview);return imageview;}
}



这篇关于xlistview网络请求数据以及添加headerview_自动轮播viewpager控件的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/744478

相关文章

IDEA如何让控制台自动换行

《IDEA如何让控制台自动换行》本文介绍了如何在IDEA中设置控制台自动换行,具体步骤为:File-Settings-Editor-General-Console,然后勾选Usesoftwrapsin... 目录IDEA如何让控制台自http://www.chinasem.cn动换行操作流http://www

Java中注解与元数据示例详解

《Java中注解与元数据示例详解》Java注解和元数据是编程中重要的概念,用于描述程序元素的属性和用途,:本文主要介绍Java中注解与元数据的相关资料,文中通过代码介绍的非常详细,需要的朋友可以参... 目录一、引言二、元数据的概念2.1 定义2.2 作用三、Java 注解的基础3.1 注解的定义3.2 内

vscode保存代码时自动eslint格式化图文教程

《vscode保存代码时自动eslint格式化图文教程》:本文主要介绍vscode保存代码时自动eslint格式化的相关资料,包括打开设置文件并复制特定内容,文中通过代码介绍的非常详细,需要的朋友... 目录1、点击设置2、选择远程--->点击右上角打开设置3、会弹出settings.json文件,将以下内

将sqlserver数据迁移到mysql的详细步骤记录

《将sqlserver数据迁移到mysql的详细步骤记录》:本文主要介绍将SQLServer数据迁移到MySQL的步骤,包括导出数据、转换数据格式和导入数据,通过示例和工具说明,帮助大家顺利完成... 目录前言一、导出SQL Server 数据二、转换数据格式为mysql兼容格式三、导入数据到MySQL数据

C++中使用vector存储并遍历数据的基本步骤

《C++中使用vector存储并遍历数据的基本步骤》C++标准模板库(STL)提供了多种容器类型,包括顺序容器、关联容器、无序关联容器和容器适配器,每种容器都有其特定的用途和特性,:本文主要介绍C... 目录(1)容器及简要描述‌php顺序容器‌‌关联容器‌‌无序关联容器‌(基于哈希表):‌容器适配器‌:(

C#提取PDF表单数据的实现流程

《C#提取PDF表单数据的实现流程》PDF表单是一种常见的数据收集工具,广泛应用于调查问卷、业务合同等场景,凭借出色的跨平台兼容性和标准化特点,PDF表单在各行各业中得到了广泛应用,本文将探讨如何使用... 目录引言使用工具C# 提取多个PDF表单域的数据C# 提取特定PDF表单域的数据引言PDF表单是一

一文详解Python中数据清洗与处理的常用方法

《一文详解Python中数据清洗与处理的常用方法》在数据处理与分析过程中,缺失值、重复值、异常值等问题是常见的挑战,本文总结了多种数据清洗与处理方法,文中的示例代码简洁易懂,有需要的小伙伴可以参考下... 目录缺失值处理重复值处理异常值处理数据类型转换文本清洗数据分组统计数据分箱数据标准化在数据处理与分析过

大数据小内存排序问题如何巧妙解决

《大数据小内存排序问题如何巧妙解决》文章介绍了大数据小内存排序的三种方法:数据库排序、分治法和位图法,数据库排序简单但速度慢,对设备要求高;分治法高效但实现复杂;位图法可读性差,但存储空间受限... 目录三种方法:方法概要数据库排序(http://www.chinasem.cn对数据库设备要求较高)分治法(常

Python脚本实现自动删除C盘临时文件夹

《Python脚本实现自动删除C盘临时文件夹》在日常使用电脑的过程中,临时文件夹往往会积累大量的无用数据,占用宝贵的磁盘空间,下面我们就来看看Python如何通过脚本实现自动删除C盘临时文件夹吧... 目录一、准备工作二、python脚本编写三、脚本解析四、运行脚本五、案例演示六、注意事项七、总结在日常使用

Python将大量遥感数据的值缩放指定倍数的方法(推荐)

《Python将大量遥感数据的值缩放指定倍数的方法(推荐)》本文介绍基于Python中的gdal模块,批量读取大量多波段遥感影像文件,分别对各波段数据加以数值处理,并将所得处理后数据保存为新的遥感影像... 本文介绍基于python中的gdal模块,批量读取大量多波段遥感影像文件,分别对各波段数据加以数值处