主页代码:
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(){
@Override
public 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);
}
};
@Override
protected 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);
}
@Override
public void onRefresh() {
isfresh=true;
if (xlvadap!=null) {
xlvadap=null;
new asynctask().execute(API.DATA_URL);
}
}
@Override
public void onLoadMore() {
isfresh=false;
SKIP=SKIP+20;
String dataUrlSkip = API.DATA_URL_SKIP_FRONT+SKIP+API.DATA_URL_SKIP_AFTER;
new asynctask().execute(dataUrlSkip);
}
@Override
public void onPageScrolled(int position, float positionOffset, int positionOffsetPixels) {
}
@Override
public 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);
}
}
}
}
@Override
public void onPageScrollStateChanged(int state) {
}
class asynctask extends AsyncTask<String,Integer,List<String>>{
@Override
protected 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() {
@Override
public 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{
@Override
public 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);
}
@Override
public int getCount() {
return list.size();
}
@Override
public Object getItem(int i) {
return list.get(i);
}
@Override
public long getItemId(int i) {
return i;
}
@Override
public int getItemViewType(int position) {
if (position%2==0) {
return ITEM_TYPE_A;
}else{
return ITEM_TYPE_B;
}
}
@Override
public int getViewTypeCount() {
return ITEM_TYPE_COUNT;
}
@Override
public 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;
}
@Override
public int getCount() {
return Integer.MAX_VALUE;
}
@Override
public boolean isViewFromObject(View view, Object object) {
return view==object;
}
@Override
public void destroyItem(ViewGroup container, int position, Object object) {
container.removeView((View) object);
}
@Override
public 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;
}
}