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 ...
随机推荐
- Python Web 基础向(四) 浅谈数据层
数据层一般会给人带来一些困扰,在于其定位不准确.聚合Model的工作也可以放在逻辑层做,但会导致逻辑层变重,经常出现大段晦涩代码.因此我的建议是保留Model聚合层,尽管会导致工作量的略微增加,但却可 ...
- SWUST OJ 爬不出去的水井(0333)
爬不出去的水井(0333) Time limit(ms): 1000 Memory limit(kb): 65535 Submission: 1069 Accepted: 150 Descriptio ...
- 根据现有的数据库自动生成Django model
Django引入外部数据库还是比较方便的,首先在setting里面设置你要连接的数据库类型和连接名称,地址之类,和创建新项目的时候一致 运行下面代码可以自动生成models模型文件 python ma ...
- RocketMQ 单机版安装并测试
一.安装maven 1.下载maven,http://maven.apache.org/download.cgi,并解压: -bin.tar.gz 2.修改系统环境变量,并验证: vim /etc/p ...
- SQL语句中in not in exits not exits用法比较
exists (sql 如果返回结果集为真) not exists (sql 如果没有返回结果集为真) 如下: 表A ID NAME 1 A1 2 A2 3 A3 表B ID AID NAME 1 1 ...
- js中的基本类型和引用类型
基本数据类型:按值访问,可操作保存在变量中的实际的值.基本类型值指的是简单的数据段. 基本数据类型有这六种:undefined.null.string.number.boolean.symbol(es ...
- IIS+PHP+Mysql 返回500,服务器内部资源问题
这个错误困扰了我好久.... 尝试了好多方法都不管用,最后突然发现我的代码是: <?php $link=mysql_connect("localhost","xxx ...
- IDEA中Git的使用详解
原文链接:https://www.cnblogs.com/javabg/p/8567790.html 工作中多人使用版本控制软件协作开发,常见的应用场景归纳如下: 假设小组中有两个人,组长小张,组员小 ...
- 【WPF学习】第五十六章 基于帧的动画
除基于属性的动画系统外,WPF提供了一种创建基于帧的动画的方法,这种方法只使用代码.需要做的全部工作是响应静态的CompositionTarge.Rendering事件,触发该事件是为了给每帧获取内容 ...
- Docker部署LAMP项目
前言 之前我们学习了如何在Linux部署LAMP项目,今天我们来学习一下如何在Docker下部署LAMP项项目吧! Docker 要求 CentOS 系统的内核版本高于 3.10 ,查看本页面的前提条 ...