android 仿QQ,微信群组里的@功能,支持@多人,并能一键删除,能获取上传对应的id

       最近在做项目中有一个群组的聊天模块,没有引用第三方的及时通信。这个模块中包含了文字、表情、语音、上传文档、下载文档、上传图片、以及对图片的处理放大(这里的图片处理可以使用PhotoView的开源库,可以下载使用)等。点击打开链接  

        这些都还好只是在文本中增加了一个@某人的功能,还可以@多人并把最后@人对应的id传到服务器中,这种功能类似QQ,微信这中,一开始我在网上找这种功能但是这方面的开源出来的少之又少。于是就自己尝试着写,终于写出来了。现在我把写这个功能遇到的一些问题提出来,并把这个功能的demo也提出来,供大家参考与改进。先上一张图。

    首先我们获取到EditText的控件id,在oncreat()方法里设置mEditText.setFilters(newInputFilter[]{ newMyInputFilter()});这里我们要创建MyInputFilter类实现InputFilter接口。这里实现这个接口就是为了监听在输入文本框里有@字符。贴出代码:

<span style="font-size:18px;"><pre name="code" class="java">  /**
     * 识别输入框的是不是@符号
     */
    private class MyInputFilter implements InputFilter {
        @Override
        public CharSequence filter(CharSequence source, int start, int end,
                                   Spanned dest, int dstart, int dend) {
            if (source.toString().equalsIgnoreCase("@")
                    || source.toString().equalsIgnoreCase("@")) {
                goAt();
            }
            return source;
        }
    }
    private void goAt() {
//         StringBuffer tmp = new StringBuffer();
        // 把选中人的id已空格分隔,拼接成字符串
//        for (Map.Entry<String, String> entry : cidNameMap.entrySet()) {
//            tmp.append(entry.getKey() + " ");
//        }
        Intent intent = new Intent(this, PersonActivity.class);
//       intent.putExtra(PersonActivity.KEY_SELECTED, tmp.reverse().toString());
//        intent.putExtra(PersonActivity.KEY_SELECTED, a);
        startActivityForResult(intent,
评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值