xlistview用法

来源:互联网 发布:unity3d汽车模型下载 编辑:程序博客网 时间:2024/06/07 00:34
public class MainActivity extends AppCompatActivity implements XListView.IXListViewListener {

private XListView xLv;
private MyBaseAdapter adapter;

//页码
private int pageIndex = 1;
//默认值是false
private boolean flag;

@Override
protected void onCreate(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 void showDialog(){

AlertDialog.Builder builder = new AlertDialog.Builder(this);
builder.setMessage("要么去死,要么开网!");
builder.setNegativeButton("你敢不开网",null);
builder.setPositiveButton("开网才好孩子", new DialogInterface.OnClickListener() {
@Override
public void onClick(DialogInterface dialog, int which) {
//设置跳转网络界面
startActivity(new Intent(Settings.ACTION_WIRELESS_SETTINGS));
}
});

builder.create().show();

}




/**
* 判断网络是否连接
* @return true 网络已经连接 false 网络没有连接
*/
public boolean isOnline() {
//得到网络连接的管理者
ConnectivityManager connMgr = (ConnectivityManager)getSystemService(Context.CONNECTIVITY_SERVICE);
//通过网络管理者得到网络信息
NetworkInfo networkInfo = connMgr.getActiveNetworkInfo();
//判断网络是否连接
return (networkInfo != null && networkInfo.isConnected());
}



/**
* 加载数据
*/
private void getData(){
try {
getNetWorkData("http://apis.juhe.cn/cook/query.php?menu="+ URLEncoder.encode("西红柿","utf-8")
+"&key=e3c3dd5597dd875ff29c665a25b74025&pn="+pageIndex+"&rn=10");
} catch (Exception e) {
e.printStackTrace();
}

}


/**
* 获取网络数据
* 方式:get
*
* @param url 请求接口地址
*/
private void getNetWorkData(String url){


new AsyncTask<String,Void,String>(){

@Override
protected void onPostExecute(String s) {
super.onPostExecute(s);

if(s == null){
return;
}
//1.解析JSON
Gson gson = new Gson();
MenuInfo menuInfo = gson.fromJson(s,MenuInfo.class);
List<MenuInfo.ResultBean.DataBean> dataBeanList = menuInfo.getResult().getData();
//2.绑定适配器

if(adapter == null) {
adapter = new MyBaseAdapter(MainActivity.this, dataBeanList);
//3.将数据映射到ListView
xLv.setAdapter(adapter);
}else{
//将获取到的新数据添加到原来与adapter绑定集合里面
adapter.loadMore(dataBeanList,flag);

}



}

@Override
protected String 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();
return StreamTools.readFromNetWork(is);
}
} catch (Exception e) {
e.printStackTrace();
}
return null;
}
}.execute(url);



}

/**
* 下拉的时候会被执行
*/
@Override
public void onRefresh() {

Log.d("MainActivity", "下拉刷新");
//pageIndex = 1 -> 2
flag = false;
++pageIndex;
getData();
xLv.stopRefresh(true);
}


/**
* 上拉的时候会被加载
*/
@Override
public void onLoadMore() {

Log.d("MainActivity", "上拉加载更多");
flag = true;
++pageIndex;
getData();
//停止加载更多
xLv.stopLoadMore();

}


public void loadMore(List<MenuInfo.ResultBean.DataBean> datas,boolean flag){



for (MenuInfo.ResultBean.DataBean dataBean : datas) {

//flag true 数据要添加到最前面 false要添加到最后面
if(flag){
dataBeanList.add(dataBean);
}else {
//首先我把数据都添加到最前面
dataBeanList.add(0, dataBean);
}


}
//刷新界面
notifyDataSetChanged();

}

@Override
public int getCount() {
return dataBeanList != null ? dataBeanList.size() : 0;
}

@Override
public Object getItem(int position) {
return dataBeanList.get(position);
}

@Override
public long getItemId(int position) {
return position;
}

@Override
public View getView(int position, 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.getDisplayImageOptions());
return convertView;
}
}
}
原创粉丝点击