標籤:android 人人網
基於人人網用戶端進行推廣與營銷的這個項目已接近尾聲。回想自己這2個月以來對Android的學習,有不少收穫。儘管在整個過程中遇到過不少問題,但最終還是解決了。
在這裡,記錄一下自己在整個過程中碰到的問題與解決方案。
我負責的是“好友”介面部分,主要需要實現的功能如下
1. 使用一個List View顯示好友名單,其中,每個Item包含帳戶圖片/姓名/ID,並使用資料庫儲存.
650) this.width=650;" src="http://s3.51cto.com/wyfs02/M02/42/3C/wKioL1PXLguySxo4AACT83jIbw4422.jpg" title="1.jpg" alt="wKioL1PXLguySxo4AACT83jIbw4422.jpg" />
第一個遇到的問題便是對圖片的儲存。因為是網狀圖片,且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要做的酷炫,卻忽略了布局要適應所有不同尺寸的裝置。
650) this.width=650;" src="http://s3.51cto.com/wyfs02/M02/42/3C/wKiom1PXLhTw-IC2AADgBuaC7Yk740.jpg" style="float:none;" title="1.jpg" alt="wKiom1PXLhTw-IC2AADgBuaC7Yk740.jpg" /> 650) this.width=650;" src="http://s3.51cto.com/wyfs02/M01/42/3C/wKiom1PXLhWSLBaJAACa1uXJ-TQ998.jpg" title="2.jpg" style="float:none;" alt="wKiom1PXLhWSLBaJAACa1uXJ-TQ998.jpg" />
2. 最後還有比較疑惑的問題就是,解析出來的”JSON”資料需要做一定的處理
比如下面這個
650) this.width=650;" src="http://s3.51cto.com/wyfs02/M00/42/3D/wKiom1PXLkTyNuksAAC1VB-B3Ns301.jpg" title="3.jpg" alt="wKiom1PXLkTyNuksAAC1VB-B3Ns301.jpg" />
這裡,需要將得到的”DOCTOR”, ”COLLEGE”等轉換為與之對應的“博士”, “本科”等。否則會顯示
650) this.width=650;" src="http://s3.51cto.com/wyfs02/M01/42/3D/wKioL1PXL3zTVWUwAAAL4ey-o5o027.jpg" title="5.jpg" alt="wKioL1PXL3zTVWUwAAAL4ey-o5o027.jpg" />
我的想法是,使用一個數組進行轉換。即,“博士”、“本科”這些添加到一個數組中,然後將最終解析出的資料與之一一比較,從而得到預期的效果
本文出自 “hacker” 部落格,請務必保留此出處http://anglecode.blog.51cto.com/5628271/1532135