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();
}
}