Viewpager+XListView+Internet
来源:互联网 发布:成都家电维修软件 编辑:程序博客网 时间:2024/06/06 02:35
package com.example.android_mobileinternet_test1;import android.app.ProgressDialog;import android.content.Context;import android.content.DialogInterface;import android.content.Intent;import android.graphics.Bitmap;import android.media.Image;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.provider.Settings;import android.support.annotation.Nullable;import android.support.v4.view.PagerAdapter;import android.support.v4.view.ViewPager;import android.support.v7.app.AlertDialog;import android.support.v7.app.AppCompatActivity;import android.view.View;import android.view.ViewGroup;import android.widget.BaseAdapter;import android.widget.ImageView;import android.widget.RelativeLayout;import android.widget.Toast;import com.example.android_mobileinternet_test1.bean.MenuInFo;import com.example.android_mobileinternet_test1.utils.ImageLoaderAsyncTask;import com.example.android_mobileinternet_test1.utils.NetWorkUtils;import com.example.android_mobileinternet_test1.utils.StreamTools;import com.google.gson.Gson;import com.limxing.xlistview.view.XListView;import com.nostra13.universalimageloader.core.DisplayImageOptions;import com.nostra13.universalimageloader.core.ImageLoader;import java.io.IOException;import java.io.InputStream;import java.io.OutputStream;import java.net.HttpURLConnection;import java.net.URL;import java.net.URLEncoder;import java.util.ArrayList;import java.util.List;/** * Created by 范晋炜 on 2017/7/26 0026. * com.example.android_mobileinternet_test1 * SecondActivity */public class SecondActivity extends AppCompatActivity implements XListView.IXListViewListener { private ViewPager viewPager; private List<String> imageAddress = new ArrayList<>(); private int index = 0; private int indexs = 1; private boolean flag; private static final int TYPE_0 = 0; private static final int TYPE_1 = 1; private MyBaseAdapter adapter; private ProgressDialog dialog; private Handler handler = new Handler(){ @Override public void handleMessage(Message msg) { super.handleMessage(msg); switch (msg.what){ case 1: { viewPager.setCurrentItem(index); } break; } } }; private XListView xLV; @Override protected void onCreate(@Nullable Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.second); viewPager = (ViewPager) findViewById(R.id.sec_pager); xLV = (XListView) findViewById(R.id.sec_XList); imageAddress.add("http://www.taoqao.com/uploads/allimg/140425/1-140425212357.jpg"); imageAddress.add("http://www.taoqao.com/uploads/allimg/140425/1-140425212400.jpg"); imageAddress.add("http://www.taoqao.com/uploads/allimg/140425/1-140425212403.jpg"); imageAddress.add("http://www.taoqao.com/uploads/allimg/140425/1-140425212522.jpg"); imageAddress.add("http://www.taoqao.com/uploads/allimg/140425/1-140425212525.jpg"); viewPager.setAdapter(new MyPagerAdapter()); autoPlay(); xLV.setPullLoadEnable(true); xLV.setXListViewListener(this); //判断网络设置 如果有网络加载数据 如果未连接网络弹出对话框 if(NetWorkUtils.isConnection(this)){ getData("http://apis.juhe.cn/cook/query.php",indexs+"",10+""); }else{ showNetWorkSettingDialog(); } } @Override public void onRefresh() { ++indexs; getData("http://apis.juhe.cn/cook/query.php",indexs+"",10+""); flag = true; xLV.stopRefresh(true); } @Override public void onLoadMore() { ++indexs; getData("http://apis.juhe.cn/cook/query.php",indexs+"",10+""); flag = false; xLV.stopLoadMore(); } private void getData(final String path, String pn, String rn){ new AsyncTask<String, Void, String>() { @Override protected void onPreExecute() { super.onPreExecute(); getDialog(); } @Override protected void onPostExecute(String s) { super.onPostExecute(s); if(s == null) return; Gson gson = new Gson(); MenuInFo menuInFo = gson.fromJson(s, MenuInFo.class); List<MenuInFo.ResultBean.DataBean.StepsBean> results = menuInFo.getResult().getData().get(0).getSteps(); //适配数据 if(adapter == null){ adapter = new MyBaseAdapter(results); xLV.setAdapter(adapter); }else{ adapter.loadMore(results,flag); adapter.notifyDataSetChanged(); } dialog.dismiss(); } @Override protected String doInBackground(String... params) { try { String path = params[0]; String pn = params[1]; String rn = params[2]; URL url = new URL(path); HttpURLConnection connection = (HttpURLConnection) url.openConnection(); connection.setRequestMethod("POST"); connection.setConnectTimeout(5000); connection.setReadTimeout(5000); OutputStream os = connection.getOutputStream(); os.write(("key=a71e47bbe5a7e7a2ecf068ca9a756032&menu=" + URLEncoder.encode("地三鲜","utf-8") + "&pn=" + pn + "&rn=" + rn).getBytes()); os.flush(); int code = connection.getResponseCode(); if(code == HttpURLConnection.HTTP_OK){ InputStream is = connection.getInputStream(); String json = StreamTools.readFromNetWork(is); return json; } } catch (IOException e) { e.printStackTrace(); } return null; } }.execute(path,pn,rn); } class MyBaseAdapter extends BaseAdapter{ private List<MenuInFo.ResultBean.DataBean.StepsBean> results; public MyBaseAdapter(List<MenuInFo.ResultBean.DataBean.StepsBean> results) { this.results = results; } public void loadMore(List<MenuInFo.ResultBean.DataBean.StepsBean> data,boolean flag){ for (MenuInFo.ResultBean.DataBean.StepsBean bean:data) { if(flag){ results.add(0,bean); }else{ results.add(bean); } } } @Override public int getCount() { return results != null ? results.size() : 0; } @Override public Object getItem(int position) { return results.get(position); } @Override public long getItemId(int position) { return position; } @Override public int getItemViewType(int position) { if(position % 2 == 0){ return TYPE_0; }else{ return TYPE_1; } } @Override public int getViewTypeCount() { return 2; } @Override public View getView(int position, View convertView, ViewGroup parent) { int type = getItemViewType(position); ViewHolder holder = null; ViewHolder2 holder2 = null; switch (type){ case 0: { if(convertView == null){ convertView = convertView.inflate(SecondActivity.this, R.layout.item1,null); holder = new ViewHolder(); holder.item1_img1 = (ImageView) convertView.findViewById(R.id.item1_img1); holder.item1_img2 = (ImageView) convertView.findViewById(R.id.item1_img2); holder.item1_img3 = (ImageView) convertView.findViewById(R.id.item1_img3); convertView.setTag(holder); }else{ holder = (ViewHolder) convertView.getTag(); } } break; case 1: { if(convertView == null){ convertView = convertView.inflate(SecondActivity.this,R.layout.item2,null); holder2 = new ViewHolder2(); holder2.item2_img = (ImageView) convertView.findViewById(R.id.item2_img); convertView.setTag(holder2); }else{ holder2 = (ViewHolder2) convertView.getTag(); } } break; } switch (type){ case 0: { getImage(results.get(position).getImg(),holder.item1_img1); getImage(results.get(position).getImg(),holder.item1_img2); getImage(results.get(position).getImg(),holder.item1_img3); } break; case 1: { getImage(results.get(position).getImg(),holder2.item2_img); } break; } return convertView; } class ViewHolder{ ImageView item1_img1,item1_img2,item1_img3; } class ViewHolder2{ ImageView item2_img; } } private void getImage(String path,ImageView imageView){ //自定义配置 DisplayImageOptions options = new DisplayImageOptions.Builder() .cacheInMemory(true)//让图片进行内存缓存 .cacheOnDisk(true)//让图片进行sdcard缓存 .showImageForEmptyUri(R.mipmap.a)//图片地址有误 .showImageOnFail(R.mipmap.b)//当图片加载出现错误的时候显示的图片 .showImageOnLoading(R.mipmap.c)//图片正在加载的时候显示的图片 .build(); //ImageLoader.getInstance().loadImage(path,options,new Ima);//加载图片 //参数1:加载的图片地址 //参数2:将图片设置到那个图片控件上面 //参数3:加载图片配置选项,意思是指明对这张图片的是否进行缓存(内存、sdcard) ImageLoader.getInstance().displayImage(path, imageView, options); } class MyPagerAdapter extends PagerAdapter{ @Override public int getCount() { return Integer.MAX_VALUE; } @Override public boolean isViewFromObject(View view, Object object) { return view == object; } @Override public Object instantiateItem(ViewGroup container, int position) { final ImageView imageView = new ImageView(SecondActivity.this); new ImageLoaderAsyncTask(new ImageLoaderAsyncTask.ImageClallBackListener() { @Override public void imageCallBack(Bitmap bitmap) { if(bitmap != null){ imageView.setImageBitmap(bitmap); }else{ imageView.setImageResource(R.mipmap.ic_launcher_round); } } }).execute(imageAddress.get(position % imageAddress.size())); container.addView(imageView); return imageView; } @Override public void destroyItem(ViewGroup container, int position, Object object) { container.removeView((View) object); } } private void autoPlay(){ new Thread(){ @Override public void run() { super.run(); while (true){ index++; int index1 = index % imageAddress.size(); try { Thread.sleep(3000); } catch (InterruptedException e) { e.printStackTrace(); } handler.sendEmptyMessage(1); } } }.start(); } //获取dialog的方法 private void getDialog(){ dialog = new ProgressDialog(this); dialog.setMessage("正在玩儿命加载数据"); dialog.show(); } private void showNetWorkSettingDialog(){ AlertDialog.Builder builder = new AlertDialog.Builder(SecondActivity.this); builder.setMessage("没有设置网络,请您设置网络!"); builder.setNegativeButton("取消",null); builder.setPositiveButton("确认", new DialogInterface.OnClickListener() { @Override public void onClick(DialogInterface dialog, int which) { Intent intent = new Intent(); intent.setAction("android.settings.WIRELESS_SETTINGS"); startActivity(intent); } }); builder.create().show(); }}
阅读全文
0 0
- Viewpager+XListView+Internet
- XListView+ViewPager
- ViewPager,XListView主Activity
- XListView+ViewPager+SQLite
- XListView+ PullToRefreshListView+ViewPager
- Viewpager+Fragment+Xlistview
- viewpager 与 Xlistview
- VIewPager+XListView+RadioButton实现布局
- ViewPager无限轮播加XListview加载
- XListView+ViewPager+上拉下拉
- fragment+Xlistview+viewpager无限轮播+imageloader
- ViewPager给图片加点事件和XListView
- json进行缓存+ViewPager+onRefresh+XlistView
- xlistview+Headview(viewpager自动带点轮播)+缓存
- XListView加头布局ViewPager轮播
- Horizontal+异步+pullTorefresh+viewPager+侧滑(XListView)
- Horizontal+异步+pullTorefresh+viewPager+侧滑(XListView)
- XListView
- XML解析
- Qt 键盘事件与消息过滤器
- Java异常处理
- MySQL命令行登陆,远程登陆MySQL
- 浅谈数组
- Viewpager+XListView+Internet
- Http协议详解及浏览器里含义,jmeter、postman工具对应内容
- 安卓设置热点ssid和密码
- sql server中根据地图经纬度算距离
- hdu6038-思维-2017多校(2)-Function
- 【HDU】6045
- bzoj4080 Wf2014 Sensor Network 随机化
- 多校赛2017 R2
- Ajax基础