WEB开发网
开发学院手机开发Ophone 开发 实现基于OPhone 2.0的GTalk客户端 阅读

实现基于OPhone 2.0的GTalk客户端

 2010-10-19 20:56:29 来源:WEB开发网   
核心提示:在这一篇文章中我们继续讨论Gtalk客户端的实现,在本文中读者将会知道如何显示当前用户的联系人列表;监听联系人是否上线;发送和接收聊天信息,实现基于OPhone 2.0的GTalk客户端,显示联系人列表GTalk类不仅可以显示当前用户的所有联系人,还会根据联系人的状态以不同的图标显示联系人是否在线,在Login类中创建

在这一篇文章中我们继续讨论Gtalk客户端的实现。在本文中读者将会知道如何显示当前用户的联系人列表;监听联系人是否上线;发送和接收聊天信息。

显示联系人列表

GTalk类不仅可以显示当前用户的所有联系人,还会根据联系人的状态以不同的图标显示联系人是否在线。联系人列表如图1所示。

(图)实现基于OPhone 2.0的GTalk客户端(二)

在这里使用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;

// 设置联系人的帐户

1 2 3 4 5 6  下一页

Tags:实现 基于 OPhone

编辑录入:爽爽 [复制链接] [打 印]
赞助商链接