自定义List列表显示短信内容,仿iphone短信气泡

短信消息实体类

[java] view plain copy print ?
  1. package com.android;
  2. /**
  3. * 消息实体类
  4. *
  5. * @author Administrator
  6. *
  7. */
  8. public class DetailEntity
  9. {
  10. // 短信联系人
  11. private String name;
  12. // 短信日期
  13. private String date;
  14. // 短信内容
  15. private String text;
  16. // 布局ID
  17. private int layoutID;
  18. public String getName()
  19. {
  20. return name;
  21. }
  22. public void setName(String name)
  23. {
  24. this.name = name;
  25. }
  26. public String getDate()
  27. {
  28. return date;
  29. }
  30. public void setDate(String date)
  31. {
  32. this.date = date;
  33. }
  34. public String getText()
  35. {
  36. return text;
  37. }
  38. public void setText(String text)
  39. {
  40. this.text = text;
  41. }
  42. public int getLayoutID()
  43. {
  44. return layoutID;
  45. }
  46. public void setLayoutID(int layoutID)
  47. {
  48. this.layoutID = layoutID;
  49. }
  50. public DetailEntity()
  51. {
  52. }
  53. public DetailEntity(String name, String date, String text, int layoutID)
  54. {
  55. super();
  56. this.name = name;
  57. this.date = date;
  58. this.text = text;
  59. this.layoutID = layoutID;
  60. }
  61. }

适配器类 继承ListAdapter

[java] view plain copy print ?
  1. package com.android;
  2. import java.util.List;
  3. import android.app.AlertDialog;
  4. import android.content.Context;
  5. import android.database.DataSetObserver;
  6. import android.view.LayoutInflater;
  7. import android.view.MotionEvent;
  8. import android.view.View;
  9. import android.view.View.OnClickListener;
  10. import android.view.View.OnLongClickListener;
  11. import android.view.View.OnTouchListener;
  12. import android.view.ViewGroup;
  13. import android.widget.LinearLayout;
  14. import android.widget.ListAdapter;
  15. import android.widget.TextView;
  16. /**
  17. * 适配器
  18. *
  19. * @author Administrator
  20. *
  21. */
  22. public class DetailAdapter implements ListAdapter
  23. {
  24. private List<DetailEntity> coll;
  25. private Context ctx;
  26. // 消息
  27. DetailEntity entity;
  28. LinearLayout layout;
  29. // 加载布局
  30. LayoutInflater vi;
  31. // ------------------------------
  32. // 背景
  33. LinearLayout layout_bj;
  34. TextView tvName;
  35. TextView tvDate;
  36. TextView tvText;
  37. public DetailAdapter(Context context, List<DetailEntity> coll)
  38. {
  39. ctx = context;
  40. this.coll = coll;
  41. }
  42. public boolean areAllItemsEnabled()
  43. {
  44. return true;
  45. }
  46. /**
  47. * 为true监听Item
  48. */
  49. public boolean isEnabled(int arg0)
  50. {
  51. return true;
  52. }
  53. public int getCount()
  54. {
  55. return coll.size();
  56. }
  57. public Object getItem(int position)
  58. {
  59. return coll.get(position);
  60. }
  61. public long getItemId(int position)
  62. {
  63. return position;
  64. }
  65. public int getItemViewType(int position)
  66. {
  67. return position;
  68. }
  69. public View getView(int position, View convertView, ViewGroup parent)
  70. {
  71. entity = coll.get(position);
  72. int itemLayout = entity.getLayoutID();
  73. // 加载布局
  74. layout = new LinearLayout(ctx);
  75. vi = (LayoutInflater) ctx
  76. .getSystemService(Context.LAYOUT_INFLATER_SERVICE);
  77. vi.inflate(itemLayout, layout, true);
  78. layout.setBackgroundColor(0xffB4B4B4);
  79. // 图片背景
  80. layout_bj = (LinearLayout) layout.findViewById(R.id.layout_bj);
  81. tvName = (TextView) layout.findViewById(R.id.messagedetail_row_name);
  82. tvName.setText(entity.getName());
  83. tvDate = (TextView) layout.findViewById(R.id.messagedetail_row_date);
  84. tvDate.setText(entity.getDate());
  85. tvText = (TextView) layout.findViewById(R.id.messagedetail_row_text);
  86. tvText.setText(entity.getText());
  87. // 添加监听
  88. addListener(tvName, tvDate, tvText, layout_bj);
  89. return layout;
  90. }
  91. public int getViewTypeCount()
  92. {
  93. return coll.size();
  94. }
  95. public boolean hasStableIds()
  96. {
  97. return true;
  98. }
  99. public boolean isEmpty()
  100. {
  101. return true;
  102. }
  103. @Override
  104. public void registerDataSetObserver(DataSetObserver observer)
  105. {
  106. // TODO Auto-generated method stub
  107. }
  108. @Override
  109. public void unregisterDataSetObserver(DataSetObserver observer)
  110. {
  111. // TODO Auto-generated method stub
  112. }
  113. /**
  114. * 内容监听
  115. *
  116. * @param convertView
  117. */
  118. public void addListener(final TextView tvName, final TextView tvDate,
  119. final TextView tvText, LinearLayout layout_bj)
  120. {
  121. layout_bj.setOnClickListener(new OnClickListener()
  122. {
  123. @Override
  124. public void onClick(View v)
  125. {
  126. }
  127. });
  128. layout_bj.setOnLongClickListener(new OnLongClickListener()
  129. {
  130. @Override
  131. public boolean onLongClick(View v)
  132. {
  133. tvName.setTextColor(0xffffffff);
  134. tvDate.setTextColor(0xffffffff);
  135. tvText.setTextColor(0xffffffff);
  136. new AlertDialog.Builder(ctx).setTitle("当前是长按操作")
  137. .setMessage("准备写个菜单").create().show();
  138. return true;
  139. }
  140. });
  141. // 按下改变字体颜色
  142. layout_bj.setOnTouchListener(new OnTouchListener()
  143. {
  144. @Override
  145. public boolean onTouch(View v, MotionEvent event)
  146. {
  147. switch (event.getAction())
  148. {
  149. case MotionEvent.ACTION_DOWN:
  150. case MotionEvent.ACTION_MOVE:
  151. tvName.setTextColor(0xffffffff);
  152. tvDate.setTextColor(0xffffffff);
  153. tvText.setTextColor(0xffffffff);
  154. break;
  155. default:
  156. tvName.setTextColor(0xff000000);
  157. tvDate.setTextColor(0xff000000);
  158. tvText.setTextColor(0xff0000ff);
  159. break;
  160. }
  161. return false;
  162. }
  163. });
  164. }
  165. }

主Activity类

[java] view plain copy print ?
  1. package com.android;
  2. import java.util.ArrayList;
  3. import java.util.List;
  4. import android.app.Activity;
  5. import android.os.Bundle;
  6. import android.widget.ListView;
  7. public class MainActivity extends Activity
  8. {
  9. private ListView talkView;
  10. private List<DetailEntity> list = null;
  11. public void onCreate(Bundle savedInstanceState)
  12. {
  13. super.onCreate(savedInstanceState);
  14. setContentView(R.layout.main);
  15. listInit();
  16. }
  17. public void listInit()
  18. {
  19. talkView = (ListView) findViewById(R.id.list);
  20. list = new ArrayList<DetailEntity>();
  21. DetailEntity d1 = new DetailEntity("私念", "2010-11-11", "你好!",
  22. R.layout.list_say_me_item);
  23. list.add(d1);
  24. DetailEntity d2 = new DetailEntity("美女", "2010-11-11", "你好!",
  25. R.layout.list_say_he_item);
  26. list.add(d2);
  27. DetailEntity d3 = new DetailEntity("美女", "2010-11-11", "你是谁?",
  28. R.layout.list_say_he_item);
  29. list.add(d3);
  30. DetailEntity d4 = new DetailEntity("私念", "2010-11-11", "我是私念",
  31. R.layout.list_say_me_item);
  32. list.add(d4);
  33. DetailEntity d5 = new DetailEntity("美女", "2010-11-11", "鬼认识你",
  34. R.layout.list_say_he_item);
  35. list.add(d5);
  36. DetailEntity d6 = new DetailEntity("私念", "2010-11-11", "那就认识下",
  37. R.layout.list_say_me_item);
  38. list.add(d6);
  39. DetailEntity d7 = new DetailEntity("美女", "2010-11-11", "切",
  40. R.layout.list_say_he_item);
  41. list.add(d7);
  42. DetailEntity d8 = new DetailEntity("私念", "2010-11-11", "~~!",
  43. R.layout.list_say_me_item);
  44. list.add(d8);
  45. talkView.setAdapter(new DetailAdapter(MainActivity.this, list));
  46. // 去掉分割线
  47. talkView.setDivider(null);
  48. }
  49. }

三个布局

main.xml主布局

[html] view plain copy print ?
  1. <?xml version="1.0" encoding="utf-8"?>
  2. <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
  3. android:layout_width="fill_parent"
  4. android:layout_height="fill_parent"
  5. android:orientation="vertical" >
  6. <ListView
  7. android:id="@+id/list"
  8. android:layout_width="fill_parent"
  9. android:layout_height="wrap_content" >
  10. </ListView>
  11. </LinearLayout>

list_say_he_item.xml  对方内容显示布局

[html] view plain copy print ?
  1. <?xml version="1.0" encoding="utf-8"?>
  2. <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
  3. android:layout_width="fill_parent"
  4. android:layout_height="wrap_content"
  5. android:layout_marginLeft="10px"
  6. android:gravity="right"
  7. android:orientation="horizontal" >
  8. <LinearLayout
  9. android:id="@+id/layout_bj"
  10. android:layout_width="249px"
  11. android:layout_height="wrap_content"
  12. android:background="@drawable/outgoing"
  13. android:orientation="vertical" >
  14. <LinearLayout
  15. android:layout_width="fill_parent"
  16. android:layout_height="22dip"
  17. android:orientation="horizontal" >
  18. <TextView
  19. android:id="@+id/messagedetail_row_name"
  20. android:layout_width="wrap_content"
  21. android:layout_height="wrap_content"
  22. android:paddingTop="2px"
  23. android:textColor="#000000"
  24. android:textSize="18dip" />
  25. <TextView
  26. android:id="@+id/messagedetail_row_date"
  27. android:layout_width="wrap_content"
  28. android:layout_height="wrap_content"
  29. android:layout_marginLeft="60dip"
  30. android:paddingTop="2px"
  31. android:textColor="#000000"
  32. android:textSize="16dip" />
  33. </LinearLayout>
  34. <TextView
  35. android:id="@+id/messagedetail_row_text"
  36. android:layout_width="fill_parent"
  37. android:layout_height="wrap_content"
  38. android:paddingLeft="2px"
  39. android:textColor="#0000DD"
  40. android:textSize="24dip" />
  41. </LinearLayout>
  42. <ImageView
  43. android:id="@+id/messagegedetail_rov_icon"
  44. android:layout_width="42px"
  45. android:layout_height="42px"
  46. android:layout_gravity="bottom"
  47. android:background="@drawable/retouxiang" />
  48. </LinearLayout>

list_say_me_item.xml  我的列表显示布局

[html] view plain copy print ?
  1. <?xml version="1.0" encoding="utf-8"?>
  2. <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
  3. android:layout_width="fill_parent"
  4. android:layout_height="wrap_content"
  5. android:orientation="horizontal" >
  6. <ImageView
  7. android:id="@+id/messagegedetail_rov_icon"
  8. android:layout_width="42px"
  9. android:layout_height="42px"
  10. android:layout_gravity="bottom"
  11. android:background="@drawable/retouxiang" />
  12. <LinearLayout
  13. android:id="@+id/layout_bj"
  14. android:layout_width="249px"
  15. android:layout_height="wrap_content"
  16. android:background="@drawable/incoming"
  17. android:orientation="vertical" >
  18. <LinearLayout
  19. android:layout_width="fill_parent"
  20. android:layout_height="22dip"
  21. android:orientation="horizontal" >
  22. <TextView
  23. android:id="@+id/messagedetail_row_name"
  24. android:layout_width="wrap_content"
  25. android:layout_height="wrap_content"
  26. android:paddingTop="2px"
  27. android:textColor="#000000"
  28. android:textSize="18dip" />
  29. <TextView
  30. android:id="@+id/messagedetail_row_date"
  31. android:layout_width="wrap_content"
  32. android:layout_height="wrap_content"
  33. android:layout_marginLeft="60dip"
  34. android:paddingTop="2px"
  35. android:textColor="#000000"
  36. android:textSize="16dip" />
  37. </LinearLayout>
  38. <TextView
  39. android:id="@+id/messagedetail_row_text"
  40. android:layout_width="fill_parent"
  41. android:layout_height="wrap_content"
  42. android:paddingLeft="2px"
  43. android:textColor="#0000DD"
  44. android:textSize="24dip" />
  45. </LinearLayout>
  46. </LinearLayout>

DEMO下载地址http://download.csdn.net/detail/tt5267621/3752867

自定义List列表显示短信内容,仿iphone短信气泡相关推荐

  1. android 自定义 滑动删除,Android_Android ListView实现仿iPhone实现左滑删除按钮的简单实例,需要自定义ListView。这里就交Fl - phpStudy...

    Android ListView实现仿iPhone实现左滑删除按钮的简单实例 需要自定义ListView.这里就交FloatDelListView吧. 复写onTouchEvent方法.如下: @Ov ...

  2. 如何恢复被删短信_恢复iPhone短信的两种简单方法推荐

    随着生活水平不断提升,iPhone的普及率也在大大提升.除微信外,短信是最高频的即时沟通工具之一.有时,不小心将对方发来的重要短信误删,无法找到相应数据时,从iPhone上恢复已删除的短信就是大家最关 ...

  3. android 短信时间排序,仿iphone中短信以及通话记录的时间显示

    废话不多说,上代码 public String getRelativeTimeSpanStringForIphone(long time,long now){ SimpleDateFormat for ...

  4. 仿iphone 气泡短信 自定义list适配器实现

    自定义List列表显示短信内容,仿iphone短信气泡 短信消息实体类 package com.android; /** * 消息实体类 * * @author Administrator * */ ...

  5. androidの读取短信内容

    androidの读取短信内容 1. 读取短信内容,很简单,直接上代码 <span style="font-size:14px;"> public Uri SMS_INB ...

  6. 小白易语言注册机post 取短信内容、单线程实战,软件日志 day06

    取短信内容 代码如下: 这里是引用.版本 2 .支持库 iext .支持库 spec .计次循环首 (30, i) 超级列表框1.置标题 (N, 4, "第[" + 到文本 (i) ...

  7. Total Control脚本功能JS API之获取设备短信内容

    每一个设备对象都对应了 Total Control 中已连接的一台手机设备. 通过设备对象,用户可以获取到手机设备的各种属性,以及使用控制接口对设备进行各种操作,比如 打开或关闭指定APP,发送短信等 ...

  8. 利用短信商务通进行短信商务

    本文将通过图解的方式一步一步教您如何使用短信商务通软件进行短信商务活动. 目前,利用短信进行商务活动越来越被广泛的采用.目前采用短信进行商务活动有三种方式,一是成为移动通讯商的SP,通过他们的审查,才 ...

  9. 短视频源码仿抖音短视频APP源码短视频平台源码短视频源码

    [WoShop仿抖音短视频源码的主要功能] 1.短视频带货:关联商品的短视频封面会有商品标识,短视频内容中会弹出商品链接 2.直播带货:短视频源码支持直播功能,直播间内可开启带货功能 3.邀请赚钱:用 ...

最新文章

  1. [转帖]在SQL SERVER中实现RSA加密算法
  2. python读文件每一行、并把这行替换-Python按行读文件
  3. 前端学习(526):等分布局
  4. JavaScript基础三
  5. java.lang.ClassNotFoundException: org.apache.jsp.WEB_002dINF.views.login_jsp
  6. Ubuntu Git安装与使用
  7. C++面试高频考点整理--基础
  8. vs2015无法编辑html,连发Lianfa娱乐app -连发Lianfa娱乐appV6.2.84
  9. 替代 NetMeeting 的多人屏幕共享工具 InletexEMC 国外出品,永久免费
  10. docker run 报错 Bind for 0.0.0.0:80 failed: port is already allocated.解决方案
  11. java中length 的用法
  12. 案例:淘宝用户行为数据分析(SQL实现)
  13. 壳 查壳 去壳 加壳的基本原理
  14. 手写数字识别问题(5)——完结
  15. js + css 实现手风琴
  16. 云主机搭建Git服务器 1
  17. 用python做股市数据分析一_用python做股票数据分析(兴趣篇)
  18. 使用PYTHON图像识别实现车牌号码识别
  19. iOS 引导图的聚光灯效果代码实现
  20. IOS9 xcode7 You must rebuild it with bitcode enabled

热门文章

  1. 《逻辑思维简易入门》(第2版) 阅读笔记1
  2. python麻将机器人_tensorflow麻将智能出牌源码-机器学习代码类资源
  3. 电商扣减库存_电商后台:商品库存管理之批次管理
  4. 温州牙科医院第4次冲刺上市:王晓敏夫妇持股95%,颓势已现
  5. ZCMU-1677-小学生小明,圣光会制裁你!!!
  6. 数学建模常用算法—多目标规划
  7. Browserify budo
  8. 二十世纪模型论发展迅猛,势不可挡
  9. Echarts 在地图上绘制流向图
  10. 电赛获奖计算机专业有用吗,计电学院获奖喜报