知识点:
php: 处理json问题,unicode转码实现
android:ListView使用与性能优化;handler消息队列机制;androidHTTP请求,activity知识等等:
效果如下:
文件结构:
MainActivity主活动界面展示:
ListActivity 跳转活动界面展示ListView内容
Person 数据填充实体
PersonAdapter ListView数据接口
Util工具类,负责网络请求以及json解析等
Manifest文件:
<?xml version="1.0" encoding="utf-8"?>
<manifest xmlns:android="http://schemas.android.com/apk/res/android"
package="com.example.tes.api" >
<application
android:allowBackup="true"
android:icon="@mipmap/ic_launcher"
android:label="@string/app_name"
android:supportsRtl="true"
android:theme="@style/AppTheme" >
<activity
android:name=".MainActivity"
android:label="@string/app_name"
android:theme="@style/AppTheme.NoActionBar" >
<intent-filter>
<action android:name="android.intent.action.MAIN" />
<category android:name="android.intent.category.LAUNCHER" />
</intent-filter>
</activity>
<activity android:name=".ListActivity">
<intent-filter>
<action android:name="android.intent.action.VIEW" />
<category android:name="android.intent.category.DEFAULT" />
</intent-filter>
</activity>
</application>
<uses-permission android:name="android.permission.INTERNET"></uses-permission>
</manifest>
主界面两个按钮功能:
点击按钮1获取textView里面的id,传递id参数,向服务器发起post请求;获取结果解析json,展示到按钮下面的显示TextView中
点击按钮2跳转到第二个意图,向服务器发起post请求,将结果填充到ListView中
服务端 api.php:
<?php
header("Content-Type:application/json;charset=utf-8");
$result = [
"status" => 200,
"msg" => "获取成功",
"result" => [
["name"=>"zfeig","age"=>26,"address"=>"广州市天河区车陂天桥11号","study"=>["no"=>"0610832110","teacher"=>"李贤良"]],
["name"=>"lisi","age"=>27,"address"=>"四川省成都市高新区226号","study"=>["no"=>"0610832110","teacher"=>"何洁"]],
["name"=>"王大崔","age"=>25,"address"=>"浙江省杭州市西湖大道120号","study"=>["no"=>"0610732110","teacher"=>"刘德华"]],
["name"=>"刘晓花","age"=>23,"address"=>"福建省厦门市厦门大学路13号","study"=>["no"=>"0610632110","teacher"=>"王明"]],
["name"=>"lisi","age"=>27,"address"=>"四川省成都市高新区226号","study"=>["no"=>"0610832110","teacher"=>"何洁"]],
["name"=>"王大崔","age"=>25,"address"=>"浙江省杭州市西湖大道120号","study"=>["no"=>"0610732110","teacher"=>"刘德华"]],
["name"=>"刘晓花","age"=>23,"address"=>"福建省厦门市厦门大学路13号","study"=>["no"=>"0610632110","teacher"=>"王明"]]
]
];
function encodeCN($result){
foreach ($result as $k => $v) {
if(is_array($v)){
$result[$k] = encodeCN($v);
}else{
$result[$k] = urlencode($v);
}
}
return $result;
}
$result = encodeCN($result);
echo urldecode(json_encode($result));
?>
MainActivity.java