@Override public void onItemClick(AdapterView<?> parent, View view, int position, long id) { // TODO Auto-generated method stub Object itemAdapter = parent.getAdapter(); if (itemAdapter instanceof EmotionGvAdapter) { // 点击的是表情 EmotionGvAdapter emotionGvAdapter = (EmotionGvAdapter) itemAdapter; if (position == emotionGvAdapter.getCount() - 1) { // 如果点击了最后一个回退按钮,则调用删除键事件 msg.dispatchKeyEvent(new KeyEvent(KeyEvent.ACTION_DOWN, KeyEvent.KEYCODE_DEL)); } else { // 如果点击了表情,则添加到输入框中 String emotionName = (String) emotionGvAdapter.getItem(position); // 获取当前光标位置,在指定位置上添加表情图片文本 int curPosition = msg.getSelectionStart(); StringBuilder sb = new StringBuilder(msg.getText().toString()); sb.insert(curPosition, emotionName); // 特殊文字处理,将表情等转换一下 msg.setText(StringUtils.getEmotionContent(this, msg, sb.toString())); // 将光标设置到新增完表情的右侧 msg.setSelection(curPosition + emotionName.length()); } } }
/** 表情删除 */ public void onEmojiconDeleteEvent() { if (!TextUtils.isEmpty(editText.getText())) { KeyEvent event = new KeyEvent(0, 0, 0, KeyEvent.KEYCODE_DEL, 0, 0, 0, 0, KeyEvent.KEYCODE_ENDCALL); editText.dispatchKeyEvent(event); } }