+号功能区的扩展

优质
小牛编辑
135浏览
2023-12-01

4.+号功能区的扩展功能

+号功能区的扩展是指在点击+号之后显示的功能区加入自定义功能。

/**
* @param functionName 添加功能的名字
* @param functionIcon 添加功能的图标
*/
Ntalker.getInstance().addPlusFunction(String functionName, int functionIcon);

例如要添加最近订单的功能,代码如下:
Ntalker.getInstance().addPlusFunction("最近订单", R.drawable.recentorder);
/**
* 添加自定义功能的点击事件监听
*/
Ntalker.getInstance().setOnPlusFunctionClickListener(new OnPlusFunctionClickListener() {
        @Override
        public void onPlusFunctionClick(String functionName) {
            if (functionName.equals("最近订单")) {
                Toast.makeText(getApplicationContext(), "点击了最近订单图标", 1).show();
            } 
        }
});

其中,自定义功能的点击发送有两种发送方法,一种是以纯文本形式发送出去,一种是以卡片方式发送出去。

以纯文本方式发送出去的方法如下:

/**
* @param msgs 发送的消息内容
*/
Ntalker.getInstance().sendNMsg(String msgs);

以卡片的方式发送出去,即在点击发送之后在聊天窗口内显示的消息是一种卡片的方式,方法如下:

step1:调用setOnSendCustomMsgListener方法,传入发送出去的消息类型sendType和显示在聊天窗口的消息内容msgs,此消息内容会在step3中回调使用。

/**
* @param sendType 发送消息的类型,1为商品详情格式的消息;2为订单格式的消息;3为其他自定义消息
* @param msgs 发送的消息数据
*/
Ntalker.getInstance().setOnSendCustomMsgListener(int sendType, String[] msgs);

step2:调用setOnShowCustomMsgListener方法,传入发送出去的消息类型sendType,消息显示出来的布局resId和OnShowCustomMsgListener监听;

/**
* @param sendType  发送消息的类型,1为商品详情格式的消息;2为订单格式的消息;3为其他自定义消息
* @param resId  自定义布局id
* @param OnShowCustomMsgListener 
*/
Ntalker.getInstance().setOnShowCustomMsgListener(int sendType, int resId, OnShowCustomMsgListener customListener);

step3:实现方法onShowCustomMsgListener,在此方法中设置数据,以设置订单消息为例,代码如下:

    /**
     * 
     * @param view 传入的订单的布局
     * @param msgType 发送消息的类型,1为商品详情格式的消息;2为订单格式的消息;3为其他自定义消息
     * @param msg 消息的数据
     */
@Override
public void onShowCustomMsgListener(View view, int msgType, String[] msg) {
    if (msgType == 2)
    {
            TextView tv_orderid = (TextView) view.findViewById(R.id.tv_orderid_demo);
            TextView tv_ordernum = (TextView) view.findViewById(R.id.tv_ordernum_demo);
            TextView tv_orderprice = (TextView) view.findViewById(R.id.tv_orderprice_demo);
            TextView tv_ordertime = (TextView) view.findViewById(R.id.tv_ordertime_demo);
            ImageView pic = (ImageView) view.findViewById(R.id.iv_icon_demo);
            RelativeLayout rl_custom = (RelativeLayout) view.findViewById(R.id.rl_custom);
            tv_orderid.setText(msg[0]);
            tv_ordernum.setText(msg[1]);
            tv_ordertime.setText(msg[2]);
            tv_orderprice.setText(msg[3]);
            rl_custom.setOnClickListener(new OnClickListener() {
                @Override
                public void onClick(View v) {
                Toast.makeText(v.getContext(), "点击跳转到订单", Toast.LENGTH_SHORT).show();
                }
            });
    }
}