Android教程網
  1. 首頁
  2. Android 技術
  3. Android 手機
  4. Android 系統教程
  5. Android 游戲
 Android教程網 >> Android技術 >> Android開發 >> 開發入門 >> android ListView詳解

android ListView詳解

日期:2016/3/13 17:14:13      編輯:開發入門

 android在UI部分為應用程序開發人員提供了極大的便利和靈活性,在此就不一一列舉了,本文擬通過一個小例子窺見一斑。
很多用過新浪微博手機客戶端android版本的童鞋想必都對其主界面的效果印象深刻,見下左圖:


從圖中可以看到,主體的列表框是個很復雜的部分,既要能顯示頭像、微博內容,又要能在微博內容中顯示表情、圖片、@某人、URL,這些元素混雜在一起,對於某些平台(你懂的J)的UI開發來講,簡直太難了。但在android上來開發,確實很容易實現,右圖就是本程序的運行結果,重點展現了列表框部分的仿照。當然,所用的圖片都是來自於新浪的了。


下面,我們就一起來看一下這個效果的代碼實現。

首先,需要定義數據模型,主要的數據抽象是Site、Blog、User,分別代表網站、博文、用戶,數據模型如下圖所示:



Java代碼:

  1. package com.test;

  2. public class User{
  3. private String screenName="測試";
  4. private boolean verifIEd=false;

  5. public User(){
  6. }

  7. public String getProfileImageUrl(){
  8. return profileImageUrl;
  9. }

  10. public String getScreenName(){
  11. return screenName;
  12. }

  13. public void setProfileImageUrl(String profileImageUrl) {
  14. this.profileImageUrl = profileImageUrl;
  15. }

  16. public void setScreenName(String screenName) {
  17. this.screenName = screenName;
  18. }

  19. public void setVerified(boolean verifIEd) {
  20. this.verified = verifIEd;
  21. }

  22. public boolean isVerifIEd(){
  23. return verifIEd;
  24. }
  25. }

Java代碼:
  1. package com.test;

  2. import Java.util.Date;

  3. public class Blog implements Comparable<Blog>{

  4. private Date createAt=new Date(System.currentTimeMillis());
  5. private Blog retweetedBlog;
  6. private String smallPic="";
  7. private String source="IE9";
  8. private User user;
  9. private Site site;

  10. public Blog(){
  11. }

  12. public Blog(Site site){
  13. this.site=site;
  14. }

  15. public boolean isHaveRetweetedBlog(){
  16. return retweetedBlog!=null;
  17. }

  18. public Blog getRetweetedBlog(){
  19. return retweetedBlog;
  20. }


  21. public String getText(){
  22. return text;
  23. }

  24. public User getUser(){
  25. return user;
  26. }

  27. public String getSmallPic(){
  28. return smallPic;
  29. }

  30. public void setRetweetedBlog(Blog retweetedBlog) {
  31. this.retweetedBlog = retweetedBlog;
  32. }

  33. public void setText(String text) {
  34. this.text = text;
  35. }

  36. public String getInReplyUserScreenName(){
  37. if (retweetedBlog!=null && retweetedBlog.getUser()!=null)
  38. return retweetedBlog.getUser().getScreenName();
  39. else
  40. return "";
  41. }

  42. public String getInReplyBlogText(){
  43. if (retweetedBlog!=null)
  44. return retweetedBlog.getText();
  45. else
  46. return "";
  47. }

  48. public void setPic(String smallPic){
  49. this.smallPic=smallPic;
  50. }

  51. public void setUser(User user) {
  52. this.user = user;
  53. }

  54. public int compareTo(Blog another) {
  55. int ret=0;

  56. if (this.createAt.before(another.createAt)){
  57. ret=-1;
  58. }
  59. else if (this.createAt.after(another.createAt)){
  60. ret=1;
  61. }
  62. else{
  63. ret=0;
  64. }

  65. return ret;
  66. }

  67. public void setSource(String source) {
  68. this.source = source;
  69. }

  70. public String getSource() {
  71. return source;
  72. }

  73. public void setSite(Site site) {
  74. this.site = site;
  75. }

  76. public Site getSite() {
  77. return site;
  78. }

  79. }

Java代碼:
  1. package com.test;

  2. import Java.util.HashMap;
  3. import Java.util.Iterator;
  4. import Java.util.Map;
  5. import Java.util.Set;
  6. import Java.util.TreeSet;

  7. public abstract class Site{

  8. protected Set<Blog> blogs=new TreeSet<Blog>();
  9. protected String name;
  10. protected Map<String,String> faceMap=new HashMap<String,String>();

  11. public Site() {
  12. onConstruct();
  13. }

  14. protected abstract void onConstruct();

  15. public Map<String, String> getFaceMap() {
  16. return faceMap;
  17. }

  18. public Set<Blog> getBlogs(){
  19. return blogs;
  20. }

  21. public long getBlogsCount(){
  22. return blogs.size();
  23. }

  24. public void addBlog(Blog blog){
  25. blogs.add(blog);
  26. }

  27. public void removeBlog(Blog blog){
  28. blogs.remove(blog);
  29. }

  30. public Iterator<Blog> getBlogsIterator(){
  31. return blogs.iterator();
  32. }

  33. public void clearBlogs(){
  34. blogs.clear();
  35. }

  36. public String getName(){
  37. return name;
  38. }
  39. }

Java代碼:
  1. package com.test;

  2. public class SinaSite extends Site {

  3. protected void onConstruct(){
  4. name="新浪微博";
  5. initFaceMap();
  6. }

  7. private void initFaceMap(){
  8. faceMap.put("[呵呵]", "hehe");
  9. faceMap.put("[嘻嘻]", "xixi");
  10. faceMap.put("[哈哈]", "haha");
  11. faceMap.put("[愛你]", "aini");
  12. faceMap.put("[暈]", "yun");
  13. faceMap.put("[淚]", "lei");
  14. }
  15. }
  1. 上一頁:
  2. 下一頁:
熱門文章
閱讀排行版
Copyright © Android教程網 All Rights Reserved