您的位置:首页 > 其它

通过POST请求得到数据,并添加到列表显示

2016-04-20 23:28 295 查看
部门的网络获取通讯录作业。感觉蛮有实用度的 。

POST请求用到的是OKHTTP的包。

用到的列表适配器的相关东西在上一个博客

package com.example.wang23333.listtext;

import android.support.v7.app.AppCompatActivity;
import android.os.Bundle;
import android.widget.ListView;

import com.squareup.okhttp.FormEncodingBuilder;
import com.squareup.okhttp.OkHttpClient;
import com.squareup.okhttp.Request;
import com.squareup.okhttp.RequestBody;
import com.squareup.okhttp.Response;

import org.json.JSONArray;
import org.json.JSONException;
import org.json.JSONObject;

import java.util.ArrayList;
import java.util.List;

import bean.Bean;

public class MainActivity extends AppCompatActivity {

private ListView mlist;
private List<Bean> mBean;
private New_Myadapter myadapter;
String result;
String realname;
String mobile;
static OkHttpClient client = new OkHttpClient();
String url = "这里是请求数据的地址";

@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);

/**
* 网络请求和UI放在两个线程里面
*/
new Thread(new Runnable() {
@Override
public void run() {
try {
result = post();

runOnUiThread(new Runnable() {
@Override
public void run() {
initDatas();
initViews();
}
});
} catch (Exception e) {
e.printStackTrace();
}
}
}).start();
}

public  String post() throws Exception {
RequestBody body = new FormEncodingBuilder()
.add("键", "值")//发送过去的键值对
.build();

final Request request = new Request.Builder()
.url(url)
.post(body)
.build();

Response response = client.newCall(request).execute();
if(response.isSuccessful()){
return response.body().string();//得到传回的数据
}
else {
return "wrong";
}
}

/**
* 配置列表适配
*/
public void initViews(){
mlist = (ListView)findViewById(R.id.list);

mlist.setAdapter(myadapter);
}

/**
* json数据处理
* 数据放入列表
*/
public void initDatas(){
mBean = new ArrayList<Bean>();

Bean bean;

JSONArray arr = null;
try {
arr = new JSONArray(result);
//根据数据条数循环添加数据
for (int i = 0; i < arr.length(); i++) {

JSONObject temp = (JSONObject) arr.get(i);
realname = temp.getString("realname");
mobile = temp.getString("mobile");

bean = new Bean(realname,mobile);
mBean.add(bean);
}
} catch (JSONException e) {
e.printStackTrace();
}
myadapter = new New_Myadapter(this,mBean);
}
}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签:  通讯录 安卓