注册完以后在服务端的数据库就可以看到了你刚才注册的账号和密码信息,在通过电脑Ctrl+c和Ctrl+v把文件复制进去进行相应功能的演示。
当我们把文件添加到刚才注册的账号文件夹里面的时候我们,我们通过登录操作(此博客忽略登录操作的代码演示,需要的可以了留言,大家一起交流一下),我们试想下我们是怎样获取到我们刚才在服务端copy进去的文件的呢?又是怎样布局到登录后的界面的呢?(师兄写的服务端给我返回的是一个json数组,(json的数据结构为 {key:value,key:value,...}的键值对的结构,在面向对象的语言中,key为对象的属性,value为对应的属性值,所以很容易理解,取值方法为 对象.key 获取属性值,这个属性值的类型可以是 数字、字符串、数组、对象几种。))就我个人见解来说,通过解析json来获取它的值,那是json中最有价值的内容,就我这个项目中,由于登录后返回的json数组是要在另外一个Activity来进行解析的并且因为要解析的JSON数组里面传来的是动态长度,所以不可能通过固定的代码传动态的值 ,而且键值对的键不能重复, 不能传多于1个以上的”filename“键 ,登录后返回的json数组是在该Activity的,所以还需要利用bundle来进行字符串跨Activity来进行数据的传递,把json数组传送到登录后跳转的界面再进行解析。
以下是json数组解析的代码:
Activity1.java
Intent intent = new Intent();
intent.setClass(M_C_PActivity.this, Catalogue.class);
Bundle bundle = new Bundle();
bundle.putString("json", strResult);// bundle键值对
intent.putExtras(bundle);
startActivity(intent);
Activity2.java
Bundle bundle = getIntent().getExtras();
String json = bundle.getString("json");
JSONArray jsonArray = new JSONArray(json);
for(int i = 0;i<jsonArray.length();++i){
JSONObject jsonObject = jsonArray.getJSONObject(i);
String name = jsonObject.getString("name");
int size = jsonObject.getInt("size");
//以上就已经是把服务端通过把json数组遍历一遍来解析了
//解析完json数组后需要做的事情就是通过这个Map<String, Object> 的容器来“name”和“size”这两个键的值遍历封装一遍
Map<String, Object> listItem = new HashMap<String,Object>();
listItem.put("name",(jsonArray.getJSONObject(i)).getString("name"));
if(((jsonArray.getJSONObject(i)).getInt("size")/1024)<1024){
listItem.put("size",String.valueOf((jsonArray.getJSONObject(i)).getInt("size")/1024)+"kb");
}
else{
listItem.put("size",String.valueOf((jsonArray.getJSONObject(i)).getInt("size")/(1024*1024))+"mb");
}
listItems.add(listItem);
}
//最后就通过simpleAdapter把listsiterm这个容器里面的“name”和“size”的值部署到listview里面。
SimpleAdapter simpleAdapter = new SimpleAdapter(Catalogue.this,listItems,R.layout.item, new String[]{"name","size"},new int[]{R.id.item_title,R.id.item_text});
ListView list = (ListView)findViewById(R.id.listview);
list.setAdapter(simpleAdapter);
个人认为,做这个云盘的,json解析和布局的联系是比较密切的。所以把这两方面放在了同一遍博文来进行论述。