//MainActivity类---->配置权限(尤其
<</span>uses-permissionandroid:name="android.permission.ACCESS_NETWORK_STATE"/>)
package com.bwie.xlistviewdemos;
import android.content.Context;
import android.content.DialogInterface;
import android.content.Intent;
import android.net.ConnectivityManager;
import android.net.NetworkInfo;
import android.os.AsyncTask;
import android.provider.Settings;
import android.support.v7.app.AlertDialog;
import android.support.v7.app.AppCompatActivity;
import android.os.Bundle;
import android.util.Log;
import com.google.gson.Gson;
import com.limxing.xlistview.view.XListView;
import java.io.InputStream;
import java.io.UnsupportedEncodingExcep
tion;
import java.net.HttpURLConnection;
import java.net.MalformedURLException;
import java.net.URL;
import java.net.URLEncoder;
import java.util.List;
public class MainActivity extends AppCompatActivity implementsXListView.IXListViewListener {
private XListViewxLv;
private MyBaseAdapteradapter;
//定义一个页码变量记录用户刷新到第几页了
private int pageIndex =1;
//定义一个变量去记录用户操作行为(例如:上拉、下拉)
private booleanflag;
@Override
protected voidonCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
xLv = (XListView) findViewById(R.id.xLv);
//设置是否可以上下拉加载
xLv.setPullLoadEnable(true);
xLv.setXListViewListener(this);
if(isOnline()) {
//有网,联网请求数据
getData();
}else{
//弹出提示对话框
showDialog();
}
}
private voidshowDialog(){
AlertDialog.Builder builder = newAlertDialog.Builder(this);
builder.setMessage("你去死,现在怎么可没网呢");
builder.setNegativeButton("你敢不联网,砍死你",null);
builder.setPositiveButton("你是一个好孩子,乖", newDialogInterface.OnClickListener() {
@Override
publicvoid onClick(DialogInterface dialog, int which) {
//跳转网络设置界面
startActivity(newIntent(Settings.ACTION_WIRELESS_SETTINGS));
}
});
builder.create().show();
}
public booleanisOnline() {
//得到一个连接管理者
ConnectivityManager connMgr =(ConnectivityManager)getSystemService(Context.CONNECTIVITY_SERVICE);
//得到联网信息
NetworkInfo networkInfo =connMgr.getActiveNetworkInfo();
//判断设备是否联网
return (networkInfo != null &&networkInfo.isConnected());
}
private voidgetData(){
try {
getNetWorkData("http://apis.juhe.cn/cook/query.php?menu="+URLEncoder.encode("西红柿","utf-8")+"&key=e3c3dd5597dd875ff29c665a
25b74025&pn="+pageIndex+"&rn=10");
} catch (Exception e) {
e.printStackTrace();
}
}
private voidgetNetWorkData(String url){
new AsyncTask(){
@Override
protectedvoid onPostExecute(String s) {
super.onPostExecute(s);
if(s == null){
return;
}
Gson gson = new Gson();
MenuInfo menuInfo =gson.fromJson(s,MenuInfo.class);
List dataBeanList =menuInfo.getResult().getData();
if(adapter == null) {
//将数据绑定到适配上
adapter = new MyBaseAdapter(MainActivity.this,dataBeanList);
//将适配器上的数据映射到ListView
xLv.setAdapter(adapter);
}else{
adapter.loadMore(dataBeanList,flag);
}
}
@Override
protectedString doInBackground(String... params) {
try {
URL url = new URL(params[0]);
HttpURLConnection connection =(HttpURLConnection) url.openConnection();
connection.setRequestMethod("GET");
connection.setConnectTimeout(5000);
connection.setReadTimeout(5000);
int code = connection.getResponseCode();
if(code == 200){
InputStream is = connection.getInputStream();
returnStreamTools.readFromNetWork(is);
}
} catch (Exception e) {
e.printStackTrace();
}
return null;
}
}.execute(url);
}
@Override
public void onRefresh(){
//1->2->..N
//一个新闻资讯类的 今日头条
->下拉的时吧最新的数据添加到最前面,反之亦然
//餐饮类的默认始终刷新的是第一页
Log.d("MainActivity", "下拉刷新");
flag = true;
++pageIndex;
getData();
//停止下拉刷新
xLv.stopRefresh(true);
}
@Override
public void onLoadMore(){
Log.d("MainActivity", "上拉加载更多数据");
flag = false;
++pageIndex;
getData();
//停止加载更多
xLv.stopLoadMore();
}
}
//适配器类
package com.bwie.xlistviewdemos;
import android.content.Context;
import android.view.View;
import android.view.ViewGroup;
import android.widget.BaseAdapter;
import android.widget.ImageView;
import android.widget.TextView;
importcom.nostra13.universalimageloader.core.ImageLoader;
import java.util.List;
public class MyBaseAdapter extends BaseAdapter {
private Contextcontext;
private ListdataBeanList;
public MyBaseAdapter(Context context,List dataBeanList){
this.context=context;
this.dataBeanList = dataBeanList;
}
public voidloadMore(List datas,boolean flag){
for (MenuInfo.ResultBean.DataBean dataBean :datas) {
//flag =true 代表下拉
false 上拉
if(flag){
dataBeanList.add(0,dataBean);
}else{
//将更多的数据添加到原来与适配器绑定的集合中去
dataBeanList.add(dataBean);
}
}
//刷新界面
notifyDataSetChanged();
}
@Override
public int getCount(){
return dataBeanList != null?dataBeanList.size(): 0;
}
@Override
public ObjectgetItem(int position) {
return dataBeanList.get(position);
}
@Override
public longgetItemId(int position) {
return position;
}
@Override
public View getView(intposition, View convertView, ViewGroup parent) {
//填充布局
if(convertView == null){
convertView =convertView.inflate(context,R.layout.item,null);
}
ImageView ivIcon = (ImageView)convertView.findViewById(R.id.ivIcon);
TextView tvContent = (TextView)convertView.findViewById(R.id.tvContent);
//设置文本信息
tvContent.setText(dataBeanList.get(position).getTitle());
//加载图片
ImageLoader.getInstance().displayImage(dataBeanList.get(position).getAlbums().get(0),ivIcon,MyApplication.getOptons());
return convertView;
}
}