实现基于OPhone 2.0的GTalk客户端
2010-10-19 20:56:29 来源:WEB开发网在这一篇文章中我们继续讨论Gtalk客户端的实现。在本文中读者将会知道如何显示当前用户的联系人列表;监听联系人是否上线;发送和接收聊天信息。
显示联系人列表
GTalk类不仅可以显示当前用户的所有联系人,还会根据联系人的状态以不同的图标显示联系人是否在线。联系人列表如图1所示。
在这里使用ListView组件来显示联系人列表。因此,需要一个Adapter类从GTalk服务器获得联系人信息。每一个联系人由一个 RosterEntry对象表示。为了获得当前用户的所有联系人,需要使用XMPPConnection类的getRoster方法获得一个 Collection对象,代码如下:
复制到剪贴板 Java代码
Collection rosterEntries = mConnection.getRoster().getEntries();
其中mConnection是在GTalk类中定义的XMPPConnection类型变量,在Login类中创建的XMPPConnection对象保存在该变量中。下面来看一下获得联系人列表的Adapter类的代码。
复制到剪贴板 Java代码
private class ContactsAdapter extends BaseAdapter
{
private Context mContext;
private LayoutInflater mLayoutInflater;
private ArrayList mContacts = new ArrayList();
private Map mContactMap = new HashMap();
public ContactsAdapter(Context context)
{
mContext = context;
mLayoutInflater = (LayoutInflater) context
.getSystemService(Context.LAYOUT_INFLATER_SERVICE);
// 获得联系人列表
loadContacts();
}
private void loadContacts()
{
// 获得RosterEntry对象的集合,每一个RosterEntry对象表示一个联系人
Collection entries = mRoster.getEntries();
for (RosterEntry entry : entries)
{
Contact contact = new Contact();
// 设置联系人图标的资源ID(默认是离线状态)
contact.iconResourceId = R.drawable.offline;
// 设置联系人的帐户
赞助商链接