2

我为即将推出的应用程序定制了表情符号实现。我希望用户选择一个表情符号,然后将其插入到编辑文本中,他可以根据自己的喜好添加更多文本。当用户单击按钮时,我想将 edittext 内容添加到 ArrayList 中,该 ArrayList 将传递给适配器以在 textview 列表视图项中显示。最初这是我的实现。

private ArrayList<Spanned> chats;
private EditText content;
-------
Spanned sp = content.getText();                 
chats.add(String.valueOf(sp));
content.setText("");                    
mAdapter.notifyDataSetChanged();

然后在适配器类中,这就是我显示内容的方式。

private ArrayList<Spanned> comments;
-------

public View getView(final int position, View convertView, ViewGroup parent){

    View v = convertView;
    if (v == null) {
        LayoutInflater inflater = (LayoutInflater) mContext.getSystemService(Context.LAYOUT_INFLATER_SERVICE);
        v = inflater.inflate(R.layout.chatlist_item, null);         
    }

    final Spanned item = comments.get(position);
    TextView fans_image = (TextView) v.findViewById(R.id.item_text);
    fans_image.setText(item);

    -------
}

上述实现工作正常。但现在我希望 ArrayList 有 String 项而不是 Spanned 项。我正在尝试以下实现。在我的活动中:

private ArrayList<String> chats;
------
Spanned sp = content.getText();                 
chats.add(String.valueOf(sp));
content.setText("");                    
mAdapter.notifyDataSetChanged();

在适配器中:

private ArrayList<String> comments;
--------
public View getView(final int position, View convertView, ViewGroup parent){

    View v = convertView;
    if (v == null) {
        LayoutInflater inflater = (LayoutInflater) mContext.getSystemService(Context.LAYOUT_INFLATER_SERVICE);
        v = inflater.inflate(R.layout.chatlist_item, null);         
    }

    final Spanned item = Html.fromHtml(comments.get(position));

    TextView fans_image = (TextView) v.findViewById(R.id.item_text);
    fans_image.setText(item);

    return v; 
}

这不起作用。相反,文本正确显示,但表情符号可绘制被替换为一些几乎类似于:obj:. 如何在文本旁边显示可绘制对象?

4

0 回答 0