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 ...
随机推荐
- echarts柱状图宽度设置(react-native)
const optionCategory = { color: ['#B5282A'], tooltip : { trigger: 'axis', axisPointer : { // 坐标轴指示器, ...
- js作用域其二:预解析
文章目錄 解析机制 JavaScript是一门解释型的语言 , 想要运行js代码需要两个阶段 编译阶段: 编译阶段就是我们常说的JavaScript预解析(预处理)阶段,在这个阶段JavaScript ...
- SetTimeout()多次运行函数后越来越快的问题
问题原因很简单,但是由于代码逻辑问题,一直没有考虑到: 网上有个帖子说的很明白:原帖入口 假如你在0时刻点击了一下按钮,那么500ms时数字会跳一下,1000ms会再跳一下,依次类推,1500,200 ...
- Spring源码阅读笔记03:xml配置读取
前面的文章介绍了IOC的概念,Spring提供的bean容器即是对这一思想的具体实现,在接下来的几篇文章会侧重于探究这一bean容器是如何实现的.在此之前,先用一段话概括一下bean容器的基本工作原理 ...
- JavaScript 执行环境以及作用域链
执行环境(execution context,为简单起见,有时也称为"环境")是 JavaScript 中最为重要的一个概念.执行环境定义了变量或函数有权访问的其他数据,决定了它们 ...
- Linux系统发行版本及其区别
1 Linux系统组成 Linux操作系统=Linux内核+GNU软件及系统软件+必要的应用程序.下表为Linux系统各组成部分的贡献人员: Linux内核 GNU组件(gcc.bash) 其他必要应 ...
- leetcode 1365. How Many Numbers Are Smaller Than the Current Number
Given the array nums, for each nums[i] find out how many numbers in the array are smaller than it. T ...
- springboot创建,自动装配原理分析,run方法启动
使用IDEA快速创建一个springboot项目 创建Spring Initializr,然后一直下一步下一步直至完成 选择web,表示创建web项目 运行原理分析 我们先来看看pom.xml文件 核 ...
- JavaScript对象(一)
Part One:对象的创建对象的创建,可以使用new Object() 或者 Object.creat(),该方法为静态函数 var foo = Object.create({x:1,y:2}); ...
- Oracle批量插入有日期类型数据
例如现在有张表 id(number) startTime(date) name(varchar2) 1 2017-08-13 zhangsan 2 2017-08-14 zhangsan 需要批量 ...