我为即将推出的应用程序定制了表情符号实现。我希望用户选择一个表情符号,然后将其插入到编辑文本中,他可以根据自己的喜好添加更多文本。当用户单击按钮时,我想将 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:
. 如何在文本旁边显示可绘制对象?