切换
来源:互联网 发布:全国企业信息查询软件 编辑:程序博客网 时间:2024/04/28 13:08
package com.bawei.zhaoqian20170724;
/**
* 作者: 赵虔
* 时间: 2017/7/24
* 类作用:用于网络请求数据,把请求到的数据解析出来,最后适配给XListView
*/
import android.os.AsyncTask;
import android.support.v7.app.AppCompatActivity;
import android.os.Bundle;
import android.view.MenuInflater;
import android.view.View;
import android.view.ViewGroup;
import android.widget.BaseAdapter;
import android.widget.ImageView;
import android.widget.ListView;
import com.bawei.zhaoqian20170724.Bean.MenuInfo;
import com.bawei.zhaoqian20170724.Utils.StringTools;
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.InputStream;
import java.net.HttpURLConnection;
import java.net.MalformedURLException;
import java.net.URL;
import java.util.List;
public class MainActivity extends AppCompatActivity implements XListView.IXListViewListener {
private XListView xlistview;
private int index = 1;
private MyBaseAdapter adapter;
private boolean boo;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
//寻找控件
xlistview = (XListView) findViewById(R.id.xlistview);
xlistview.setPullLoadEnable(true);
xlistview.setXListViewListener(this);
//通过指定接口请求数据
getData("http://qhb.2dyt.com/Bwei/news?type=" + index + "&postkey=ad1AK");
}
// 通过指定接口请求数据
private void getData(String path) {
new AsyncTask<String, Void, String>() {
@Override
protected void onPostExecute(String s) {
super.onPostExecute(s);
if (s != null) {
// 使用Gson解析请求到的数据
Gson gson = new Gson();
MenuInfo info = gson.fromJson(s, MenuInfo.class);
List<MenuInfo.ListBean> list = info.getList();
// 把数据回调给Xlistview的适配器加载数据
if (adapter == null) {
adapter = new MyBaseAdapter(list);
xlistview.setAdapter(adapter);
} else {
adapter.addData(list, boo);
adapter.notifyDataSetChanged();
}
}
}
@Override
protected String doInBackground(String... params) {
try {
// 得到路径,实例化HttpURLConnection对象
URL url = new URL(params[0]);
HttpURLConnection connection = (HttpURLConnection) url.openConnection();
// 设置请求方式
connection.setRequestMethod("GET");
// 设置请求数据的时间
connection.setConnectTimeout(5000);
// 设置读取数据的时间
connection.setReadTimeout(5000);
// 判断响应,如果==200说明请求成功
if (connection.getResponseCode() == HttpURLConnection.HTTP_OK) {
// 得到请求的数据流
InputStream is = connection.getInputStream();
// 把请求到的数据流转换成String类型返回
return StringTools.getJson(is);
}
} catch (Exception e) {
e.printStackTrace();
}
return null;
}
}.execute(path);
}
//下拉刷新
@Override
public void onRefresh() {
++index;
getData("http://qhb.2dyt.com/Bwei/news?type=" + index + "&postkey=ad1AK");
boo = true;
xlistview.stopRefresh(true);
}
//上啦加载
@Override
public void onLoadMore() {
++index;
getData("http://qhb.2dyt.com/Bwei/news?type=" + index + "&postkey=ad1AK");
boo = false;
xlistview.stopLoadMore();
}
// Xlistview 自定义适配器
class MyBaseAdapter extends BaseAdapter {
private List<MenuInfo.ListBean> list;
public MyBaseAdapter(List<MenuInfo.ListBean> list) {
this.list = list;
}
/**
* 判断,如果是true就是在下拉刷新,数据从0下标开始添加显示在最前面
* 如果是false就是在上啦加载,数据从默认从最后面加载
*
* @param data 新请求到的数据
* @param b 用于判断是在下拉刷新还是上啦加载
*/
private void addData(List<MenuInfo.ListBean> data, boolean b) {
for (MenuInfo.ListBean bean : data) {
if (b)
list.add(0, bean);
else
list.add(bean);
}
}
@Override
public int getCount() {
return list != null ? list.size() : 0;
}
@Override
public Object getItem(int position) {
return list.get(position);
}
@Override
public long getItemId(int position) {
return position;
}
@Override
public View getView(int position, View convertView, ViewGroup parent) {
ViewHolder0 holder0 = null;
ViewHolder1 holder1 = null;
int type = getItemViewType(position);
// 根据item 的type来添加数据
switch (type) {
case 0:
if (convertView == null) {
convertView = View.inflate(MainActivity.this, R.layout.item0, null);
holder0 = new ViewHolder0();
holder0.left = (ImageView) convertView.findViewById(R.id.imgleft);
holder0.right = (ImageView) convertView.findViewById(R.id.imgright);
convertView.setTag(holder0);
} else {
holder0 = (ViewHolder0) convertView.getTag();
}
//从请求到的数据中得到pic的图片路劲,把路劲通过"|"分割
String[] split = list.get(position).getPic().split("\\|");
// 使用ImageLoader加载图片
setImage(split[0 < (split.length - 1) ? 0 : 0], holder0.left);
setImage(split[1 < (split.length - 1) ? 1 : 0], holder0.right);
break;
case 1:
if (convertView == null) {
convertView = View.inflate(MainActivity.this, R.layout.item1, null);
holder1 = new ViewHolder1();
holder1.topleft = (ImageView) convertView.findViewById(R.id.imgTopleft);
holder1.topright = (ImageView) convertView.findViewById(R.id.imgTopright);
holder1.bottomleft = (ImageView) convertView.findViewById(R.id.imgBottomleft);
holder1.bottomright = (ImageView) convertView.findViewById(R.id.imgBottomright);
convertView.setTag(holder1);
} else {
holder1 = (ViewHolder1) convertView.getTag();
}
//从请求到的数据中得到pic的图片路劲,把路劲通过"|"分割
String[] split1 = list.get(position).getPic().split("\\|");
// 使用ImageLoader加载图片
setImage(split1[0 < (split1.length - 1) ? 0 : 0], holder1.topleft);
setImage(split1[1 < (split1.length - 1) ? 1 : 0], holder1.topright);
setImage(split1[2 < (split1.length - 1) ? 2 : 0], holder1.bottomleft);
setImage(split1[3 < (split1.length - 1) ? 3 : 0], holder1.bottomright);
break;
}
return convertView;
}
// 得到type的总数
@Override
public int getViewTypeCount() {
return 2;
}
// 得到每一个item的type
@Override
public int getItemViewType(int position) {
if (position % 2 == 0)
return 0;
else
return 1;
}
}
class ViewHolder0 {
ImageView left;
ImageView right;
}
class ViewHolder1 {
ImageView topleft;
ImageView topright;
ImageView bottomleft;
ImageView bottomright;
}
// 自定义方法使用ImageLoader加载图片
private void setImage(String path, ImageView img) {
// 自定加载图片
DisplayImageOptions build = new DisplayImageOptions.Builder()
.cacheInMemory(true)
.cacheOnDisk(true)
.showImageForEmptyUri(R.mipmap.ic_empty)
.showImageOnLoading(R.mipmap.loading)
.showImageOnFail(R.mipmap.ic_error)
.build();
// 把图片按照自定义方式加载
ImageLoader.getInstance().displayImage(path, img, build);
}
}
/**
* 作者: 赵虔
* 时间: 2017/7/24
* 类作用:用于网络请求数据,把请求到的数据解析出来,最后适配给XListView
*/
import android.os.AsyncTask;
import android.support.v7.app.AppCompatActivity;
import android.os.Bundle;
import android.view.MenuInflater;
import android.view.View;
import android.view.ViewGroup;
import android.widget.BaseAdapter;
import android.widget.ImageView;
import android.widget.ListView;
import com.bawei.zhaoqian20170724.Bean.MenuInfo;
import com.bawei.zhaoqian20170724.Utils.StringTools;
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.InputStream;
import java.net.HttpURLConnection;
import java.net.MalformedURLException;
import java.net.URL;
import java.util.List;
public class MainActivity extends AppCompatActivity implements XListView.IXListViewListener {
private XListView xlistview;
private int index = 1;
private MyBaseAdapter adapter;
private boolean boo;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
//寻找控件
xlistview = (XListView) findViewById(R.id.xlistview);
xlistview.setPullLoadEnable(true);
xlistview.setXListViewListener(this);
//通过指定接口请求数据
getData("http://qhb.2dyt.com/Bwei/news?type=" + index + "&postkey=ad1AK");
}
// 通过指定接口请求数据
private void getData(String path) {
new AsyncTask<String, Void, String>() {
@Override
protected void onPostExecute(String s) {
super.onPostExecute(s);
if (s != null) {
// 使用Gson解析请求到的数据
Gson gson = new Gson();
MenuInfo info = gson.fromJson(s, MenuInfo.class);
List<MenuInfo.ListBean> list = info.getList();
// 把数据回调给Xlistview的适配器加载数据
if (adapter == null) {
adapter = new MyBaseAdapter(list);
xlistview.setAdapter(adapter);
} else {
adapter.addData(list, boo);
adapter.notifyDataSetChanged();
}
}
}
@Override
protected String doInBackground(String... params) {
try {
// 得到路径,实例化HttpURLConnection对象
URL url = new URL(params[0]);
HttpURLConnection connection = (HttpURLConnection) url.openConnection();
// 设置请求方式
connection.setRequestMethod("GET");
// 设置请求数据的时间
connection.setConnectTimeout(5000);
// 设置读取数据的时间
connection.setReadTimeout(5000);
// 判断响应,如果==200说明请求成功
if (connection.getResponseCode() == HttpURLConnection.HTTP_OK) {
// 得到请求的数据流
InputStream is = connection.getInputStream();
// 把请求到的数据流转换成String类型返回
return StringTools.getJson(is);
}
} catch (Exception e) {
e.printStackTrace();
}
return null;
}
}.execute(path);
}
//下拉刷新
@Override
public void onRefresh() {
++index;
getData("http://qhb.2dyt.com/Bwei/news?type=" + index + "&postkey=ad1AK");
boo = true;
xlistview.stopRefresh(true);
}
//上啦加载
@Override
public void onLoadMore() {
++index;
getData("http://qhb.2dyt.com/Bwei/news?type=" + index + "&postkey=ad1AK");
boo = false;
xlistview.stopLoadMore();
}
// Xlistview 自定义适配器
class MyBaseAdapter extends BaseAdapter {
private List<MenuInfo.ListBean> list;
public MyBaseAdapter(List<MenuInfo.ListBean> list) {
this.list = list;
}
/**
* 判断,如果是true就是在下拉刷新,数据从0下标开始添加显示在最前面
* 如果是false就是在上啦加载,数据从默认从最后面加载
*
* @param data 新请求到的数据
* @param b 用于判断是在下拉刷新还是上啦加载
*/
private void addData(List<MenuInfo.ListBean> data, boolean b) {
for (MenuInfo.ListBean bean : data) {
if (b)
list.add(0, bean);
else
list.add(bean);
}
}
@Override
public int getCount() {
return list != null ? list.size() : 0;
}
@Override
public Object getItem(int position) {
return list.get(position);
}
@Override
public long getItemId(int position) {
return position;
}
@Override
public View getView(int position, View convertView, ViewGroup parent) {
ViewHolder0 holder0 = null;
ViewHolder1 holder1 = null;
int type = getItemViewType(position);
// 根据item 的type来添加数据
switch (type) {
case 0:
if (convertView == null) {
convertView = View.inflate(MainActivity.this, R.layout.item0, null);
holder0 = new ViewHolder0();
holder0.left = (ImageView) convertView.findViewById(R.id.imgleft);
holder0.right = (ImageView) convertView.findViewById(R.id.imgright);
convertView.setTag(holder0);
} else {
holder0 = (ViewHolder0) convertView.getTag();
}
//从请求到的数据中得到pic的图片路劲,把路劲通过"|"分割
String[] split = list.get(position).getPic().split("\\|");
// 使用ImageLoader加载图片
setImage(split[0 < (split.length - 1) ? 0 : 0], holder0.left);
setImage(split[1 < (split.length - 1) ? 1 : 0], holder0.right);
break;
case 1:
if (convertView == null) {
convertView = View.inflate(MainActivity.this, R.layout.item1, null);
holder1 = new ViewHolder1();
holder1.topleft = (ImageView) convertView.findViewById(R.id.imgTopleft);
holder1.topright = (ImageView) convertView.findViewById(R.id.imgTopright);
holder1.bottomleft = (ImageView) convertView.findViewById(R.id.imgBottomleft);
holder1.bottomright = (ImageView) convertView.findViewById(R.id.imgBottomright);
convertView.setTag(holder1);
} else {
holder1 = (ViewHolder1) convertView.getTag();
}
//从请求到的数据中得到pic的图片路劲,把路劲通过"|"分割
String[] split1 = list.get(position).getPic().split("\\|");
// 使用ImageLoader加载图片
setImage(split1[0 < (split1.length - 1) ? 0 : 0], holder1.topleft);
setImage(split1[1 < (split1.length - 1) ? 1 : 0], holder1.topright);
setImage(split1[2 < (split1.length - 1) ? 2 : 0], holder1.bottomleft);
setImage(split1[3 < (split1.length - 1) ? 3 : 0], holder1.bottomright);
break;
}
return convertView;
}
// 得到type的总数
@Override
public int getViewTypeCount() {
return 2;
}
// 得到每一个item的type
@Override
public int getItemViewType(int position) {
if (position % 2 == 0)
return 0;
else
return 1;
}
}
class ViewHolder0 {
ImageView left;
ImageView right;
}
class ViewHolder1 {
ImageView topleft;
ImageView topright;
ImageView bottomleft;
ImageView bottomright;
}
// 自定义方法使用ImageLoader加载图片
private void setImage(String path, ImageView img) {
// 自定加载图片
DisplayImageOptions build = new DisplayImageOptions.Builder()
.cacheInMemory(true)
.cacheOnDisk(true)
.showImageForEmptyUri(R.mipmap.ic_empty)
.showImageOnLoading(R.mipmap.loading)
.showImageOnFail(R.mipmap.ic_error)
.build();
// 把图片按照自定义方式加载
ImageLoader.getInstance().displayImage(path, img, build);
}
}
阅读全文
0 0