1,主要内容为Android客户端请求服务器post提交参数;
2,请求到完整的json数据之后,进行解析取值(看json数据是对象类型还是数组结构);
private void okhttpDate() {
Log.i("TAG","--ok-");
new Thread(new Runnable() {
@Override
public void run() {
HttpURLConnection conn=null;
String urlStr="服务器的url路径";
InputStream is = null;
String resultData = "";
try {
URL url = new URL(urlStr); //URL对象
conn = (HttpURLConnection)url.openConnection(); //使用URL打开一个链接,下面设置这个连接
conn.setRequestMethod("POST"); //使用POST请求
if(conn.getResponseCode()==200) {//返回200表示相应成功
is = conn.getInputStream(); //获取输入流
InputStreamReader isr = new InputStreamReader(is);
BufferedReader bufferReader = new BufferedReader(isr);
String inputLine = "";
while ((inputLine = bufferReader.readLine()) != null) {
resultData += inputLine + "\n";
}
System.out.println("post方法取回内容:" + resultData);
jsonJXDate(resultData);
}
} catch (IOException e) {
e.printStackTrace();
}
}
}).start();
}
请求数据已经完成,可以调试看看是否有数据,再就是解析了;
private void jsonJXDate(String date) {
if(date!=null) {
try {
JSONObject jsonObject = new JSONObject(date);
String resultCode = jsonObject.getString("message");
if (resultCode.equals("success")) {
JSONArray resultJsonArray = jsonObject.getJSONArray("devices");
for(int i=0;i<resultJsonArray.length();i++){
jsonObject = resultJsonArray.getJSONObject( i );
Map<String, Object> map = new HashMap<>();
//获取到json数据中的activity数组里的内容name
String name = jsonObject.getString("devicename");
//获取到json数据中的activity数组里的内容startTime
String shijian=jsonObject.getString("deviceaddre");
//存入map
map.put("name", name);
map.put("shijian", shijian);
//ArrayList集合
list.add(map);
}
}
Message msg=new Message();
msg.what=1;
handler.sendMessage(msg);
} catch (JSONException e) {
e.printStackTrace();
}
}
}
请求解析数据ok了,我们请求网络数据需要开启线程的,所以别忘记了;
public Handler handler=new Handler(){
@Override
public void handleMessage(Message msg) {
switch (msg.what){
case 1:
//添加分割线
mRecyclerView.addItemDecoration(new DividerItemDecoration(getActivity(), DividerItemDecoration.VERTICAL));
recy_item_Adapter recy=new recy_item_Adapter(list,getActivity());
//设置布局显示格式
mRecyclerView.setLayoutManager(new LinearLayoutManager(getActivity()));
mRecyclerView.setAdapter(recy);
recy.setOnItemClickListener(this);
break;
}
}
};
public void onRefresh() {
//检查是否处于刷新状态
if (!isRefresh) {
isRefresh = true;
//模拟加载网络数据,这里设置2秒,正好能看到2色进度条
new Handler().postDelayed(new Runnable() {
public void run() {
//显示或隐藏刷新进度条
swipeRefreshLayout.setRefreshing(false);
//修改adapter的数据
//data.add("这是新添加的数据");
// mRecyclerView.addItemDecoration(new DividerItemDecoration(getActivity(), DividerItemDecoration.VERTICAL));
// recy_item_Adapter recy=new recy_item_Adapter(list,getActivity());
// //设置布局显示格式
// mRecyclerView.setLayoutManager(new LinearLayoutManager(getActivity()));
// mRecyclerView.setAdapter(recy);
// recy.notifyDataSetChanged();
isRefresh = false;
}
}, 2000);
}
}
我这里是动态显示布局文件信息,写了RecyclerView的类文件里面,不懂的初学者可以网上看看RecyclerView+网络请求数据解析,大致就这些信息,谢谢!