基于人人网客户端进行推广与营销的这个项目已接近尾声。回想自己这2个月以来对Android的学习,有不少收获。尽管在整个过程中遇到过不少问题,但最终还是解决了。
在这里,记录一下自己在整个过程中碰到的问题与解决方案。
我负责的是“好友”界面部分,主要需要实现的功能如下
1. 使用一个List View显示好友列表,其中,每个Item包含用户头像/姓名/ID,并使用数据库保存.
第一个遇到的问题便是对图片的保存。因为是网络图片,且List View使用的是Simple Adapter设置每个Item的内容,而Simple Adapter是不支持map(?, ?)中保存Bitmap的。
最后在网上搜了一下,普遍采用实现View Binder接口来解决这一问题。
fAdapter.setViewBinder(new ViewBinder() { publicboolean setViewValue(View view, Object data, StringtextRepresentation) { // 判断是否为我们要处理的对象 if (view instanceof ImageView && data instanceof Bitmap) { ImageViewiv = (ImageView) view; iv.setImageBitmap((Bitmap)data); returntrue; }else returnfalse; } });
在这里,view就是自定义的布局,而data则是传入的list数据。此函数将遍历布局中的各个组件,从而使data中保存的图片传入Simple Adapter。
2. 为Item设置单击事件,先获取每个Item的ID,之后通过Intent传送过去,在另一个界面显示好友的基本信息.其布局为Scroll View中 嵌套 List View。话说,最初看到官方客户端的时候还弄不明白,为什么不在一个界面上显示所有的信息?后来就发现了下面这种布局的问题了。在真机上测试时,对Scroll View的拖动会影响List View的拖动。其实,最好的方式应该是使用ExpandableListView。其次,就是在不同的手机中,显示的信息将不能和背景图片吻合。之前想着UI要做的酷炫,却忽略了布局要适应所有不同尺寸的设备。
2. 最后还有比较疑惑的问题就是,解析出来的”JSON”数据需要做一定的处理
比如下面这个
这里,需要将得到的”DOCTOR”, ”COLLEGE”等转换为与之对应的“博士”, “本科”等。否则会显示
我的想法是,使用一个数组进行转换。即,“博士”、“本科”这些添加到一个数组中,然后将最终解析出的数据与之一一比较,从而得到预期的效果
本文出自 “hacker” 博客,请务必保留此出处http://anglecode.blog.51cto.com/5628271/1532135