Android ListView显示访问WebServices返回的JSON结果
1、WebServices的返回结果

2、ListView内容布局代码
<?xml version="1.0" encoding="utf-8"?>
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:background="@color/colorWhite"
> <ImageView
android:id="@+id/app_icon"
android:layout_width="30dp"
android:layout_height="30dp"
android:layout_centerVertical="true"
android:layout_marginLeft="5dp"
android:layout_marginTop="5dp" android:src="@mipmap/ic_launcher_round1" /> <TextView
android:id="@+id/customitem"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_toRightOf="@id/app_icon"
android:gravity="center"
android:paddingLeft="20dp"
android:text="app name"
android:textSize="20sp"
android:textColor="@color/colorPrimaryDark"
android:layout_marginTop="5dp"/> <TextView
android:id="@+id/customdesc"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_below="@id/customitem"
android:layout_toRightOf="@id/app_icon"
android:gravity="center"
android:paddingLeft="20dp"
android:singleLine="true"
android:text="app describe"
android:textSize="14sp"
android:textColor="@color/colorPrimaryDark"
android:layout_marginBottom="5dp"/> </RelativeLayout>
3、Adapter的代码
import android.content.Context;
import android.view.LayoutInflater;
import android.view.View;
import android.view.ViewGroup;
import android.widget.BaseAdapter;
import android.widget.ImageView;
import android.widget.TextView; import java.util.List;
import java.util.Map; public class MyCustomAdapter extends BaseAdapter {
private Context context;
private List<Map<String,Object>> list;
private LayoutInflater inflater;
public MyCustomAdapter(List<Map<String,Object>> list, Context context)
{
this.context=context;
this.list=list;
inflater=LayoutInflater.from(context);
}
@Override
public int getCount() {
return list==null?:list.size();
} @Override
public Object getItem(int position) {
return position;
} @Override
public long getItemId(int position) {
return position;
}
class ViewHolder{
public ImageView imageView;
public TextView appText;
public TextView descText;
} @Override
public View getView(int position, View convertView, ViewGroup parent) {
ViewHolder holder =null;
if (holder == null){
holder=new ViewHolder();
if(convertView ==null){
convertView=inflater.inflate(R.layout.drawelist,null);
holder.imageView = (ImageView) convertView.findViewById(R.id.app_icon);
holder.appText = (TextView) convertView.findViewById(R.id.customitem);
holder.descText = (TextView) convertView.findViewById(R.id.customdesc);
convertView.setTag(holder);
}else {
//根据Tag获取已经存在的ViewHolder
holder = (ViewHolder) convertView.getTag();
}
//设置显示内容
holder.appText.setText(list.get(position).get("name").toString());
holder.descText.setText(list.get(position).get("desc").toString());
holder.imageView.setBackgroundResource((Integer)list.get(position).get("image"));
} return convertView;
} }
4、访问WEB代码
public static List<EmpInfo> GetEmpInfo(String PageNum, String PageSize, String strwhere) {
List<EmpInfo> listEmpinfo = new ArrayList<>();
InputStreamReader in = null;
try {
final String SERVER_URL = GlobalAppliaction.WebUrl + "GetEmpList";
HttpPost request = new HttpPost(SERVER_URL); // 根据内容来源地址创建一个Http请求
List params = new ArrayList();
params.add(new BasicNameValuePair("PageNum", PageNum)); // 添加必须的参数
params.add(new BasicNameValuePair("PageSize", PageSize)); // 添加必须的参数
params.add(new BasicNameValuePair("strwhere", strwhere)); // 添加必须的参数
request.setEntity(new UrlEncodedFormEntity(params, org.apache.http.protocol.HTTP.UTF_8)); // 设置参数的编码
HttpResponse httpResponse = new DefaultHttpClient().execute(request); // 发送请求并获取反馈
// 解析返回的内容
if (httpResponse.getStatusLine().getStatusCode() != ) {
InputStream inputStream = httpResponse.getEntity().getContent();
in = new InputStreamReader(inputStream);
BufferedReader bufferedReader = new BufferedReader(in);
StringBuffer strBuffer = new StringBuffer();
String line = null;
while ((line = bufferedReader.readLine()) != null) {
strBuffer.append(line);
}
inputStream.close();
bufferedReader.close();
String result = strBuffer.toString();
String errCode = "";
String strresult = "";
JSONObject root = new JSONObject(result);
errCode = root.getString("Code");
if (errCode.equals("")) {
strresult = root.getString("Result");
JSONArray array = root.getJSONArray("Result");//解析result
Gson gson = new Gson();
listEmpinfo = gson.fromJson(strresult, new TypeToken<List<EmpInfo>>() {
}.getType());
}
return listEmpinfo;
}
} catch (IOException e) {
e.printStackTrace();
Log.d("debug", e.toString());
return null;
} catch (JSONException e) {
e.printStackTrace();
return null;
} finally {
if (in != null) {
try {
in.close();
} catch (IOException e) {
e.printStackTrace();
}
}
}
return listEmpinfo;
}
5、UI展示获取结果
//启动后台任务
GetWebResultTask queryAddressTask = new GetWebResultTask();
//分页显示
queryAddressTask.execute("", "", "");
ArrayList<Map<String, Object>> list = new ArrayList<Map<String, Object>>();
Map<String, Object> map;
public class GetWebResultTask extends AsyncTask<String, Integer, List<EmpInfo>> {
@Override
protected List<EmpInfo> doInBackground(String... params) {
List<EmpInfo> GetResult = null;
try {
GetResult = WebByHttp.GetEmpInfo(params[], params[], params[]); } catch (Exception e) {
e.printStackTrace();
}
//将结果返回给onPostExecute方法
return GetResult; } //此方法可以在主线程改变UI
protected void onPostExecute(List<EmpInfo> result) { try { for (int ii = ; ii < result.size(); ii++) {
map = new HashMap<String, Object>();
map.put("image", R.drawable.ic_launcher_background);
map.put("name", result.get(ii).EmpName);
map.put("desc", result.get(ii).CreateTime);
list.add(map);
}
myCustomAdapter = new MyCustomAdapter(list, getActivity());
listviewemp.setAdapter(myCustomAdapter);
listviewemp.setOnItemClickListener(new AdapterView.OnItemClickListener() {
@Override
public void onItemClick(AdapterView<?> parent, View view, int position, long id) {
Toast.makeText(getActivity(), list.get(position).get("name").toString(), Toast.LENGTH_LONG).show();
}
}); } catch (Exception e) {
e.printStackTrace();
} }
}
6、界面效果

Android ListView显示访问WebServices返回的JSON结果的更多相关文章
- Android ListView显示不同样式的item
先look图 我们再使用listview时,listview的item大多时候都是一种样式,在很多app中也很常见,但有时候根据需求,可能数据的数量不一样,同个类型的数据显示的位置不同,亦或者有的it ...
- Android ListView显示底部的分割线
有些时候,我们会提出这样的需求,希望ListView显示底部(顶部)的分割线,这样做,会使得UI效果更加精致,如下图所示: 如果搜索资料,大家会搜到一堆相关的方法,最多的莫过于设置listview的f ...
- Android ListView 显示多种数据类型
ListView往往可能会有不同的数据类型,单类型的数据可能运用会比较少些,这也是最近项目中的一个需求{在发送消息的时候,需要选择联系人,而联系人列表由英文字母索引+联系人组成},上一篇文章只是一个基 ...
- android ListView点击item返回后listview滚动位置
1.Don't work when dynamically loading content Parcelable state; @Override public void onPause() { // ...
- Android 登陆功能的实现(访问WebServices 解析返回的JSON结果)
1. WebServices返回的JSON结果 { , "Result": [{ ", ", ", " }] } 2.访问WEB服务代码 i ...
- Android 自定义 ListView 显示网络上 JSON 格式歌曲列表
本文内容 环境 项目结构 演示自定义 ListView 显示网络上 JSON 歌曲列表 参考资料 本文最开始看的是一个国人翻译的文章,没有源代码可下载,根据文中提供的代码片段,自己新建的项目(比较可恶 ...
- Android项目开发全程(四)-- 将网络返回的json字符串轻松转换成listview列表
前面几篇博文介绍了从项目搭建到获取网络字符串,对一个项目的前期整体工作进行了详细的介绍,本篇接着上篇介绍一下怎么样优雅将网络返回的json字符串轻松转换成listview列表. 先上图,看一下效果. ...
- Android_(控件)使用ListView显示Android系统中SD卡的文件列表
使用ListView显示Android SD卡中的文件列表 父类布局activity_main.xml,子类布局line.xml(一个文件的单独存放) 运行截图: 程序结构: <?xml ver ...
- Android ListView滑动过程中图片显示重复错乱闪烁问题解决
最新内容建议直接访问原文:Android ListView滑动过程中图片显示重复错乱闪烁问题解决 主要分析Android ListView滚动过程中图片显示重复.错乱.闪烁的原因及解决方法,顺带提及L ...
随机推荐
- mybatis的通用mapper小结
import tk.mybatis.mapper.entity.Example; //此包是tk下的1.定义一个dao层接口不需要任何方法 需要继承Mapper<类型> 2.在servic ...
- html中的锚点介绍和使用
以下资料整理自网路 1.锚点是网页制作中超级链接的一种,又叫命名锚记.命名锚记像一个迅速定位器一样是一种页面内的超级链接,运用相当普遍. 英文名:anchor 使用命名锚记可以在文档中设置标记,这些标 ...
- 通过virt-manager给Windowsxp系统配置virtio驱动
在虚拟机的detail上添加一个硬件设备. 下载virtio.iso文件,我使用的版本126,具体的virtio驱动放到了10.2上的itest的目录中,使用可以找. 在配置中,添加virtio硬盘. ...
- python 使用 UTF-8 编码
题记 一般我喜欢用 utf-8 编码,在 python 怎么使用呢? 使用utf-8 文字 在 python 源码文件中用 utf-8 文字.一般会报错,如下: File "F:\works ...
- 猫头鹰的深夜翻译:核心JAVA并发一
简介 从创建以来,JAVA就支持核心的并发概念如线程和锁.这篇文章会帮助从事多线程编程的JAVA开发人员理解核心的并发概念以及如何使用它们. (博主将在其中加上自己的理解以及自己想出的例子作为补充) ...
- 全栈新视觉——前后端分离
1234 前端工程化从单纯的 HTML/CSS/JavaScript,到 gulp/webpack 以及 node.js.可能还需要其他的插件 sass.less.vue.react.angular. ...
- 表单验证之JQuery Validate控件
概述 jQuery Validation Plugin v1.14.0,基于JQuery,官网http://jqueryvalidation.org/ 该插件捆绑了一套有用的验证方法,包括 URL 和 ...
- C++学习之旅
到现在为止学习C++也已经有一个半月了.一个半个月里我怀着好奇与敬畏一步步的走来,一步步的走向C++的内心深处,也发现了C++"内心的复杂".虽有坎坷,但从未放弃. 我承认,我不是 ...
- log4p踩坑总结
log4p可以方便的打印格式化日志,在实际应用时,因没有好好理解官网中的配置文件,导致出错了几次. 现总结如下: 1. 安装 pip3 install log4p 2. 查看配置说明,请参考https ...
- 云机器同步数据 - rsync
一.需求 从google cloud云机器上定期同步图片内容,选用了支持增量备份的rsync. 二.rsync概述 rsyn是类unix系统下的数据镜像备份工具 - remote sync,安全性高, ...