Android通讯录管理(获取联系人、通话记录、短信消息)(三)
原文:
http://blog.csdn.net/wwj_748/article/details/19984941
这是通讯录管理的最后一篇,前面两篇已经把获取联系人和通话记录解决了,短息消息就相对来说要稍微复杂那么一点。我们先来看看效果图:
源码下载:http://download.csdn.net/detail/wwj_748/6962865
首先显示短信列表,每个列表会显示发送人号码,日期还有短信的内容概要,点击列表之后进入穿查看会话的短信消息,这里为了简单起见就没有把发送消息的功能加进去了。
布局界面:
/Contact_Demo/res/layout/sms_list_view.xml
- <?xml version="1.0" encoding="utf-8"?>
- <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
- android:layout_width="match_parent"
- android:layout_height="match_parent"
- android:background="#000000"
- android:orientation="vertical" >
- <ListView
- android:id="@+id/sms_list"
- android:layout_width="fill_parent"
- android:layout_height="wrap_content"
- android:layout_gravity="center"
- android:cacheColorHint="#00000000"
- android:choiceMode="singleChoice"
- android:fastScrollEnabled="true"
- android:soundEffectsEnabled="true" />
- </LinearLayout>
/Contact_Demo/res/layout/sms_list_item.xml
- <?xml version="1.0" encoding="utf-8"?>
- <RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
- android:layout_width="fill_parent"
- android:layout_height="wrap_content"
- android:gravity="center_vertical"
- android:paddingTop="5dip" >
- <QuickContactBadge
- android:id="@+id/qcb"
- android:layout_width="75dip"
- android:layout_height="75dip"
- android:layout_marginBottom="3dip"
- android:src="@drawable/touxiang" />
- <LinearLayout
- android:id="@+id/ll"
- android:layout_width="wrap_content"
- android:layout_height="wrap_content"
- android:layout_marginLeft="3dip"
- android:layout_toRightOf="@+id/qcb"
- android:gravity="center_vertical"
- android:orientation="horizontal" >
- <TextView
- android:id="@+id/name"
- android:layout_width="wrap_content"
- android:layout_height="wrap_content"
- android:singleLine="true"
- android:textAppearance="?android:attr/textAppearanceMedium"
- android:textColor="#ffffff" />
- <TextView
- android:id="@+id/count"
- android:layout_width="wrap_content"
- android:layout_height="wrap_content"
- android:layout_marginLeft="5dip"
- android:singleLine="true"
- android:textAppearance="?android:attr/textAppearanceSmall"
- android:textColor="#ffffff" />
- </LinearLayout>
- <TextView
- android:id="@+id/date"
- android:layout_width="wrap_content"
- android:layout_height="wrap_content"
- android:layout_below="@+id/ll"
- android:layout_marginLeft="3dip"
- android:layout_toRightOf="@+id/qcb"
- android:singleLine="true"
- android:textAppearance="?android:attr/textAppearanceSmall"
- android:textColor="#ffffff" />
- <TextView
- android:id="@+id/content"
- android:layout_width="wrap_content"
- android:layout_height="wrap_content"
- android:layout_below="@+id/date"
- android:layout_gravity="bottom"
- android:layout_marginLeft="3dip"
- android:layout_toRightOf="@+id/qcb"
- android:singleLine="true"
- android:textAppearance="?android:attr/textAppearanceMedium"
- android:textColor="#5CACEE" />
- </RelativeLayout>
短息实体类:
/Contact_Demo/src/com/suntek/contact/model/SMSBean.java
- package com.suntek.contact.model;
- public class SMSBean {
- private String thread_id; // 线程id
- private String msg_count; // 消息个数
- private String msg_snippet; // 消息片段
- private String address; // 地址
- private Long date; // 日期
- private String read; // 已读
- public SMSBean(String threadId, String msgCount, String msgSnippet) {
- thread_id = threadId;
- msg_count = msgCount;
- msg_snippet = msgSnippet;
- }
- public SMSBean() {
- }
- public String getAddress() {
- return address;
- }
- public void setAddress(String address) {
- this.address = address;
- }
- public Long getDate() {
- return date;
- }
- public void setDate(Long date) {
- this.date = date;
- }
- public String getRead() {
- return read;
- }
- public void setRead(String read) {
- this.read = read;
- }
- public String getThread_id() {
- return thread_id;
- }
- public void setThread_id(String threadId) {
- thread_id = threadId;
- }
- public String getMsg_count() {
- return msg_count;
- }
- public void setMsg_count(String msgCount) {
- msg_count = msgCount;
- }
- public String getMsg_snippet() {
- return msg_snippet;
- }
- public void setMsg_snippet(String msgSnippet) {
- msg_snippet = msgSnippet;
- }
- }
/Contact_Demo/src/com/suntek/contact/adapter/SMSAdpter.java
- package com.suntek.contact.adapter;
- import java.text.SimpleDateFormat;
- import java.util.ArrayList;
- import java.util.Date;
- import java.util.List;
- import android.content.Context;
- import android.view.LayoutInflater;
- import android.view.View;
- import android.view.ViewGroup;
- import android.widget.BaseAdapter;
- import android.widget.TextView;
- import com.suntek.contact.R;
- import com.suntek.contact.model.SMSBean;
- /**
- * 短信适配器
- *
- * @author Administrator
- *
- */
- public class SMSAdpter extends BaseAdapter {
- private LayoutInflater mInflater;
- private List<SMSBean> smsList;
- private Date date;
- private SimpleDateFormat sdf;
- public SMSAdpter(Context context) {
- mInflater = LayoutInflater.from(context);
- this.smsList = new ArrayList<SMSBean>();
- this.date = new Date();
- this.sdf = new SimpleDateFormat("MM/dd HH:mm");
- }
- public void assignment(List<SMSBean> smsList) {
- this.smsList = smsList;
- }
- public void add(SMSBean bean) {
- smsList.add(bean);
- }
- public void remove(int position) {
- smsList.remove(position);
- }
- @Override
- public int getCount() {
- return smsList.size();
- }
- @Override
- public Object getItem(int position) {
- return smsList.get(position);
- }
- @Override
- public long getItemId(int position) {
- return position;
- }
- @Override
- public View getView(int position, View convertView, ViewGroup parent) {
- ViewHolder holder = null;
- if (convertView == null) {
- convertView = mInflater.inflate(R.layout.sms_list_item, parent,
- false);
- holder = new ViewHolder();
- holder.name = (TextView) convertView.findViewById(R.id.name);
- holder.count = (TextView) convertView.findViewById(R.id.count);
- holder.date = (TextView) convertView.findViewById(R.id.date);
- holder.content = (TextView) convertView.findViewById(R.id.content);
- } else {
- holder = (ViewHolder) convertView.getTag();
- }
- holder.name.setText(smsList.get(position).getAddress());
- holder.count.setText("(" + smsList.get(position).getMsg_count() + ")");
- this.date.setTime(smsList.get(position).getDate());
- holder.date.setText(this.sdf.format(date));
- holder.content.setText(smsList.get(position).getMsg_snippet());
- convertView.setTag(holder);
- return convertView;
- }
- public final class ViewHolder {
- public TextView name;
- public TextView count;
- public TextView date;
- public TextView content;
- }
- }
Activity界面
/Contact_Demo/src/com/suntek/contact/SMSListActivity.java
- package com.suntek.contact;
- import java.util.HashMap;
- import java.util.List;
- import java.util.Map;
- import android.app.Activity;
- import android.os.Bundle;
- import android.view.View;
- import android.widget.AdapterView;
- import android.widget.AdapterView.OnItemClickListener;
- import android.widget.ListView;
- import com.suntek.contact.adapter.SMSAdpter;
- import com.suntek.contact.model.SMSBean;
- import com.suntek.contact.util.BaseIntentUtil;
- import com.suntek.contact.util.RexseeSMS;
- /**
- * 短信列表
- *
- * @author Administrator
- *
- */
- public class SMSListActivity extends Activity {
- private ListView smsListView;
- private SMSAdpter smsAdpter;
- private RexseeSMS rsms;
- @Override
- protected void onCreate(Bundle savedInstanceState) {
- super.onCreate(savedInstanceState);
- setContentView(R.layout.sms_list_view);
- smsListView = (ListView) findViewById(R.id.sms_list);
- smsAdpter = new SMSAdpter(SMSListActivity.this);
- rsms = new RexseeSMS(SMSListActivity.this);
- List<SMSBean> list_mmt = rsms.getThreadsNum(rsms.getThreads(0));
- // 注入短信列表数据
- smsAdpter.assignment(list_mmt);
- // 填充数据
- smsListView.setAdapter(smsAdpter);
- // 短信列表项点击事件
- smsListView.setOnItemClickListener(new OnItemClickListener() {
- @Override
- public void onItemClick(AdapterView<?> parent, View view,
- int position, long id) {
- Map<String, String> map = new HashMap<String, String>();
- SMSBean sb = (SMSBean) smsAdpter.getItem(position);
- map.put("phoneNumber", sb.getAddress());
- map.put("threadId", sb.getThread_id());
- BaseIntentUtil.intentSysDefault(SMSListActivity.this,
- MessageBoxList.class, map);
- }
- });
- }
- }
查询短信的工具类:
/Contact_Demo/src/com/suntek/contact/util/RexseeSMS.java
- package com.suntek.contact.util;
- import java.util.ArrayList;
- import java.util.List;
- import android.content.ContentResolver;
- import android.content.Context;
- import android.database.Cursor;
- import android.net.Uri;
- import com.suntek.contact.model.SMSBean;
- public class RexseeSMS {
- public static final String CONTENT_URI_SMS = "content://sms"; // 短信
- public static final String CONTENT_URI_SMS_INBOX = "content://sms/inbox";// 收件箱
- public static final String CONTENT_URI_SMS_SENT = "content://sms/sent"; // 发送
- public static final String CONTENT_URI_SMS_CONVERSATIONS = "content://sms/conversations";
- public RexseeSMS(Context mContext) {
- this.mContext = mContext;
- // TODO Auto-generated constructor stub
- }
- public static String[] SMS_COLUMNS = new String[] { "_id", // 0
- "thread_id", // 1
- "address", // 2
- "person", // 3
- "date", // 4
- "body", // 5
- "read", // 6; 0:not read 1:read; default is 0
- "type", // 7; 0:all 1:inBox 2:sent 3:draft 4:outBox 5:failed
- // 6:queued
- "service_center" // 8
- };
- public static String[] THREAD_COLUMNS = new String[] { "thread_id",
- "msg_count", "snippet" };
- private Context mContext;
- public String getContentUris() {
- String rtn = "{";
- rtn += "\"sms\":\"" + CONTENT_URI_SMS + "\"";
- rtn += ",\"inbox\":\"" + CONTENT_URI_SMS_INBOX + "\"";
- rtn += ",\"sent\":\"" + CONTENT_URI_SMS_SENT + "\"";
- rtn += ",\"conversations\":\"" + CONTENT_URI_SMS_CONVERSATIONS + "\"";
- rtn += "}";
- return rtn;
- }
- public String get(int number) {
- return getData(null, number);
- }
- public String getUnread(int number) {
- return getData("type=1 AND read=0", number);
- }
- public String getRead(int number) {
- return getData("type=1 AND read=1", number);
- }
- public String getInbox(int number) {
- return getData("type=1", number);
- }
- public String getSent(int number) {
- return getData("type=2", number);
- }
- public String getByThread(int thread) {
- return getData("thread_id=" + thread, 0);
- }
- public String getData(String selection, int number) {
- Cursor cursor = null;
- ContentResolver contentResolver = mContext.getContentResolver();
- try {
- if (number > 0) {
- cursor = contentResolver.query(Uri.parse(CONTENT_URI_SMS),
- SMS_COLUMNS, selection, null, "date desc limit "
- + number);
- } else {
- cursor = contentResolver.query(Uri.parse(CONTENT_URI_SMS),
- SMS_COLUMNS, selection, null, "date desc");
- }
- if (cursor == null || cursor.getCount() == 0)
- return "[]";
- String rtn = "";
- for (int i = 0; i < cursor.getCount(); i++) {
- cursor.moveToPosition(i);
- if (i > 0)
- rtn += ",";
- rtn += "{";
- rtn += "\"_id\":" + cursor.getString(0);
- rtn += ",\"thread_id\":" + cursor.getString(1);
- rtn += ",\"address\":\"" + cursor.getString(2) + "\"";
- rtn += ",\"person\":\""
- + ((cursor.getString(3) == null) ? "" : cursor
- .getString(3)) + "\"";
- rtn += ",\"date\":" + cursor.getString(4);
- rtn += ",\"body\":\"" + cursor.getString(5) + "\"";
- rtn += ",\"read\":"
- + ((cursor.getInt(6) == 1) ? "true" : "false");
- rtn += ",\"type\":" + cursor.getString(7);
- rtn += ",\"service_center\":" + cursor.getString(8);
- rtn += "}";
- }
- return "[" + rtn + "]";
- } catch (Exception e) {
- return "[]";
- }
- }
- public List<SMSBean> getThreads(int number) {
- Cursor cursor = null;
- ContentResolver contentResolver = mContext.getContentResolver();
- List<SMSBean> list = new ArrayList<SMSBean>();
- try {
- if (number > 0) {
- cursor = contentResolver.query(
- Uri.parse(CONTENT_URI_SMS_CONVERSATIONS),
- THREAD_COLUMNS, null, null, "thread_id desc limit "
- + number);
- } else {
- cursor = contentResolver.query(
- Uri.parse(CONTENT_URI_SMS_CONVERSATIONS),
- THREAD_COLUMNS, null, null, "date desc");
- }
- if (cursor == null || cursor.getCount() == 0)
- return list;
- for (int i = 0; i < cursor.getCount(); i++) {
- cursor.moveToPosition(i);
- SMSBean mmt = new SMSBean(cursor.getString(0),
- cursor.getString(1), cursor.getString(2));
- list.add(mmt);
- }
- return list;
- } catch (Exception e) {
- return list;
- }
- }
- public List<SMSBean> getThreadsNum(List<SMSBean> ll) {
- Cursor cursor = null;
- ContentResolver contentResolver = mContext.getContentResolver();
- List<SMSBean> list = new ArrayList<SMSBean>();
- // try {
- for (SMSBean mmt : ll) {
- cursor = contentResolver.query(Uri.parse(CONTENT_URI_SMS),
- SMS_COLUMNS, "thread_id = " + mmt.getThread_id(), null,
- null);
- if (cursor == null || cursor.getCount() == 0)
- return list;
- cursor.moveToFirst();
- mmt.setAddress(cursor.getString(2));
- mmt.setDate(cursor.getLong(4));
- mmt.setRead(cursor.getString(6));
- list.add(mmt);
- }
- return list;
- // } catch (Exception e) {
- // Log.e("getThreadsNum", "getThreadsNum-------------");
- // return list;
- // }
- }
- }
上面是短信列表的实现,下面是会话消息的实现
界面布局:
/Contact_Demo/res/layout/message_list_view.xml
- <?xml version="1.0" encoding="utf-8"?>
- <RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
- android:layout_width="fill_parent"
- android:layout_height="fill_parent"
- android:background="#000000" >
- <ListView
- android:id="@+id/message_list"
- android:layout_width="fill_parent"
- android:layout_height="wrap_content"
- android:background="#00000000"
- android:cacheColorHint="#00000000"
- android:choiceMode="singleChoice"
- android:soundEffectsEnabled="true" />
- </RelativeLayout>
/Contact_Demo/res/layout/list_say_he_item.xml
- <?xml version="1.0" encoding="utf-8"?>
- <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
- android:layout_width="fill_parent"
- android:layout_height="wrap_content"
- android:gravity="left"
- android:orientation="horizontal"
- android:paddingBottom="10dip"
- android:paddingLeft="5dip"
- android:paddingRight="50dip"
- android:paddingTop="10dip" >
- <LinearLayout
- android:id="@+id/layout_bj"
- android:layout_width="wrap_content"
- android:layout_height="wrap_content"
- android:layout_gravity="left"
- android:background="@drawable/incoming"
- android:gravity="center_vertical"
- android:orientation="vertical" >
- <com.suntek.contact.view.CustomTextView
- android:id="@+id/messagedetail_row_text"
- android:layout_width="wrap_content"
- android:layout_height="wrap_content"
- android:gravity="top|left"
- android:padding="5dip"
- android:textColor="#000000" />
- <TextView
- android:id="@+id/messagedetail_row_date"
- android:layout_width="wrap_content"
- android:layout_height="wrap_content"
- android:layout_gravity="right"
- android:textAppearance="?android:attr/textAppearanceSmall"
- android:textColor="#65879e" />
- </LinearLayout>
- </LinearLayout>
- <?xml version="1.0" encoding="utf-8"?>
- <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
- android:layout_width="fill_parent"
- android:layout_height="wrap_content"
- android:gravity="right"
- android:orientation="horizontal"
- android:paddingBottom="10dip"
- android:paddingLeft="50dip"
- android:paddingRight="5dip"
- android:paddingTop="10dip" >
- <LinearLayout
- android:id="@+id/layout_bj"
- android:layout_width="wrap_content"
- android:layout_height="wrap_content"
- android:layout_gravity="right"
- android:background="@drawable/outgoing"
- android:gravity="center_vertical"
- android:orientation="vertical" >
- <com.suntek.contact.view.CustomTextView
- android:id="@+id/messagedetail_row_text"
- android:layout_width="wrap_content"
- android:layout_height="wrap_content"
- android:gravity="top|left"
- android:padding="5dip"
- android:textColor="#000000" />
- <TextView
- android:id="@+id/messagedetail_row_date"
- android:layout_width="wrap_content"
- android:layout_height="wrap_content"
- android:layout_gravity="right"
- android:textAppearance="?android:attr/textAppearanceSmall"
- android:textColor="#65879e" />
- </LinearLayout>
- </LinearLayout>
短信消息实体类:
/Contact_Demo/src/com/suntek/contact/model/MessageBean.java
- package com.suntek.contact.model;
- public class MessageBean {
- private String name; // 联系人姓名
- private String date; // 日期
- private String text; // 文本
- private int layoutID; // 布局id,区分是发送人还是接收人
- public MessageBean() {
- }
- public MessageBean(String name, String date, String text, int layoutID) {
- super();
- this.name = name;
- this.date = date;
- this.text = text;
- this.layoutID = layoutID;
- }
- public String getName() {
- return name;
- }
- public void setName(String name) {
- this.name = name;
- }
- public String getDate() {
- return date;
- }
- public void setDate(String date) {
- this.date = date;
- }
- public String getText() {
- return text;
- }
- public void setText(String text) {
- this.text = text;
- }
- public int getLayoutID() {
- return layoutID;
- }
- public void setLayoutID(int layoutID) {
- this.layoutID = layoutID;
- }
- }
/Contact_Demo/src/com/suntek/contact/adapter/MessageBoxListAdapter.java
- package com.suntek.contact.adapter;
- import java.util.List;
- import android.app.AlertDialog;
- import android.content.Context;
- import android.content.DialogInterface;
- import android.graphics.Color;
- import android.text.ClipboardManager;
- import android.view.LayoutInflater;
- import android.view.MotionEvent;
- import android.view.View;
- import android.view.View.OnClickListener;
- import android.view.View.OnLongClickListener;
- import android.view.View.OnTouchListener;
- import android.view.ViewGroup;
- import android.widget.BaseAdapter;
- import android.widget.LinearLayout;
- import android.widget.TextView;
- import com.suntek.contact.R;
- import com.suntek.contact.model.MessageBean;
- /**
- * 消息列表适配器
- *
- * @author Administrator
- *
- */
- public class MessageBoxListAdapter extends BaseAdapter {
- private List<MessageBean> mbList;
- private Context ctx;
- private LinearLayout layout_father;
- private LayoutInflater vi;
- private LinearLayout layout_child;
- private TextView tvDate;
- private TextView tvText;
- public MessageBoxListAdapter(Context context, List<MessageBean> coll) {
- ctx = context;
- vi = (LayoutInflater) ctx
- .getSystemService(Context.LAYOUT_INFLATER_SERVICE);
- this.mbList = coll;
- }
- public int getCount() {
- return mbList.size();
- }
- public Object getItem(int position) {
- return mbList.get(position);
- }
- public long getItemId(int position) {
- return position;
- }
- public View getView(int position, View convertView, ViewGroup parent) {
- MessageBean mb = mbList.get(position);
- // 得到布局ID
- int itemLayout = mb.getLayoutID();
- layout_father = new LinearLayout(ctx);
- vi.inflate(itemLayout, layout_father, true);
- layout_father.setBackgroundColor(Color.TRANSPARENT);
- layout_child = (LinearLayout) layout_father
- .findViewById(R.id.layout_bj);
- tvText = (TextView) layout_father
- .findViewById(R.id.messagedetail_row_text);
- tvText.setText(mb.getText());
- tvDate = (TextView) layout_father
- .findViewById(R.id.messagedetail_row_date);
- tvDate.setText(mb.getDate());
- addListener(tvText, tvDate, layout_child, mb);
- return layout_father;
- }
- public void addListener(final TextView tvText, final TextView tvDate,
- LinearLayout layout_bj, final MessageBean mb) {
- layout_bj.setOnClickListener(new OnClickListener() {
- public void onClick(View v) {
- }
- });
- layout_bj.setOnLongClickListener(new OnLongClickListener() {
- public boolean onLongClick(View v) {
- tvText.setTextColor(0xffffffff);
- showListDialog(newtan, mb);
- return true;
- }
- });
- layout_bj.setOnTouchListener(new OnTouchListener() {
- public boolean onTouch(View v, MotionEvent event) {
- switch (event.getAction()) {
- case MotionEvent.ACTION_DOWN:
- case MotionEvent.ACTION_MOVE:
- tvText.setTextColor(0xffffffff);
- break;
- default:
- tvText.setTextColor(Color.BLACK);
- break;
- }
- return false;
- }
- });
- }
- private String[] newtan = new String[] { "转发", "复制文本内容", "删除", "查询信息详情" };
- private void showListDialog(final String[] arg, final MessageBean mb) {
- new AlertDialog.Builder(ctx).setTitle("信息选项")
- .setItems(arg, new DialogInterface.OnClickListener() {
- public void onClick(DialogInterface dialog, int which) {
- switch (which) {
- case 0:
- break;
- case 1:
- ClipboardManager cmb = (ClipboardManager) ctx
- .getSystemService(ctx.CLIPBOARD_SERVICE);
- cmb.setText(mb.getText());
- break;
- case 2:
- break;
- case 3:
- break;
- }
- ;
- }
- }).show();
- }
- }
/Contact_Demo/src/com/suntek/contact/MessageBoxList.java
- package com.suntek.contact;
- import java.text.SimpleDateFormat;
- import java.util.ArrayList;
- import java.util.Date;
- import java.util.List;
- import android.app.Activity;
- import android.content.AsyncQueryHandler;
- import android.content.ContentResolver;
- import android.database.Cursor;
- import android.net.Uri;
- import android.os.Bundle;
- import android.widget.ListView;
- import android.widget.Toast;
- import com.suntek.contact.adapter.MessageBoxListAdapter;
- import com.suntek.contact.model.MessageBean;
- /**
- * 短信消息列表 收发人
- *
- * @author Administrator
- *
- */
- public class MessageBoxList extends Activity {
- private ListView talkView;
- private List<MessageBean> messages = null;
- private AsyncQueryHandler asyncQuery;
- private String address;
- private SimpleDateFormat sdf;
- @Override
- protected void onCreate(Bundle savedInstanceState) {
- super.onCreate(savedInstanceState);
- setContentView(R.layout.message_list_view);
- sdf = new SimpleDateFormat("MM-dd HH:mm");
- String thread = getIntent().getStringExtra("threadId");
- init(thread);
- }
- private void init(String thread) {
- asyncQuery = new MessageAsynQueryHandler(getContentResolver());
- talkView = (ListView) findViewById(R.id.message_list);
- messages = new ArrayList<MessageBean>();
- Uri uri = Uri.parse("content://sms");
- String[] projection = new String[] { "date", "address", "person",
- "body", "type" }; // 查询的列
- asyncQuery.startQuery(0, null, uri, projection,
- "thread_id = " + thread, null, "date asc");
- }
- /**
- * 异步查询数据库的类
- *
- * @author Administrator
- *
- */
- private class MessageAsynQueryHandler extends AsyncQueryHandler {
- public MessageAsynQueryHandler(ContentResolver cr) {
- super(cr);
- }
- @Override
- protected void onQueryComplete(int token, Object cookie, Cursor cursor) {
- if (cursor != null && cursor.getCount() > 0) {
- cursor.moveToFirst();
- for (int i = 0; i < cursor.getCount(); i++) {
- cursor.moveToPosition(i);
- String date = sdf.format(new Date(cursor.getLong(cursor
- .getColumnIndex("date"))));
- if (cursor.getInt(cursor.getColumnIndex("type")) == 1) {// 他说的信息
- MessageBean d = new MessageBean(
- cursor.getString(cursor
- .getColumnIndex("address")),
- date,
- cursor.getString(cursor.getColumnIndex("body")),
- R.layout.list_say_he_item);
- messages.add(d);
- } else { // 我说的信息
- MessageBean d = new MessageBean(
- cursor.getString(cursor
- .getColumnIndex("address")),
- date,
- cursor.getString(cursor.getColumnIndex("body")),
- R.layout.list_say_me_item);
- messages.add(d);
- }
- }
- if (messages.size() > 0) {
- talkView.setAdapter(new MessageBoxListAdapter(
- MessageBoxList.this, messages));
- talkView.setDivider(null);
- talkView.setSelection(messages.size());
- } else {
- Toast.makeText(MessageBoxList.this, "没有短信进行操作",
- Toast.LENGTH_SHORT).show();
- }
- }
- super.onQueryComplete(token, cookie, cursor);
- }
- }
- }