如何自定义会话列表?


            
2015-11-10 10:10 | Android

回答:

  1. ConversationListFragment 增加了新接口:

  2. public void setAdapter(ConversationListAdapter adapter)
    public ConversationListAdapter getAdapter();

用户可以设置自己的 adapter 实现对会话列表的自定义

使用方法:

  1. 继承并实现 adapter,自定义 adapter 中的布局及显示,例如:自定义会话列表未读消息数显示红点,不显示未读数目

  2. public class ConversationListAdapterEx extends ConversationListAdapter {
        public ConversationListAdapterEx(Context context) {
            super(context);
        }
    
        @Override
        protected View newView(Context context, int position, ViewGroup group) {
            return super.newView(context, position, group);
        }
    
        @Override
        protected void bindView(View v, int position, UIConversation data) {
        if(data.getConversationType().equals(Conversation.ConversationType.DISCUSSION))
            data.setUnreadType(UIConversation.UnreadRemindType.REMIND_ONLY);
            super.bindView(v, position, data);
        }
    }

3.    在实例化 ConversationListFragment 时,设置 adapter

ConversationListFragment listFragment = ConversationListFragment.getInstance();
listFragment.setAdapter(new ConversationListAdapterEx(RongContext.getInstance()));
Uri uri = Uri.parse("rong://" + getApplicationInfo().packageName).buildUpon()
        .appendPath("conversationlist")
        .appendQueryParameter(Conversation.ConversationType.PRIVATE.getName(), "false") //设置私聊会话是否聚合显示
        .appendQueryParameter(Conversation.ConversationType.GROUP.getName(), "false")//群组
        .appendQueryParameter(Conversation.ConversationType.DISCUSSION.getName(), "false")//讨论组
        .appendQueryParameter(Conversation.ConversationType.PUBLIC_SERVICE.getName(), "false")//公共服务号
        .appendQueryParameter(Conversation.ConversationType.SYSTEM.getName(), "false")//系统
        .build();
listFragment.setUri(uri);


您认为此回答对您有帮助?

共有 22 位开发者认为此问题有帮助

我对此仍有疑问!继续追问