如何将 <Spanned> 放入 list.setAdapter?
Posted
技术标签:
【中文标题】如何将 <Spanned> 放入 list.setAdapter?【英文标题】:How put <Spanned> into list.setAdapter? 【发布时间】:2011-06-02 14:43:14 【问题描述】:简单但有点棘手,如果我有的话
list.setAdapter(new ArrayAdapter<String>(this,R.layout.double_row, R.id.doubleRow, articleItemsHelper));
如果 articleItemsHelper 是 String 则有效,但我想在其中设置 html 格式,因此当 articleItemsHelper 类型为 Spanned 这个(适配器)不起作用。
ArrayList<Spanned> articleItemsHelper = new ArrayList<Spanned>();
解决办法是什么?
编辑:这是解决方案 - 自定义适配器
private static class SpannedAdapter extends BaseAdapter
private LayoutInflater mInflater;
private ArrayList<Spanned> mArticleList;
public SpannedAdapter(Context context, ArrayList<Spanned> articleList)
mInflater = LayoutInflater.from(context);
mArticleList = articleList;
public int getCount()
return mArticleList.size();
public Object getItem(int position)
return position;
public long getItemId(int position)
return position;
public View getView(int position, View convertView, ViewGroup parent)
ViewHolder holder;
if (convertView == null)
convertView = mInflater.inflate(R.layout.single_row, null);
holder = new ViewHolder();
holder.text = (TextView) convertView.findViewById(R.id.singleRow);
convertView.setTag(holder);
else
holder = (ViewHolder) convertView.getTag();
holder.text.setText(mArticleList.get(position));
return convertView;
static class ViewHolder
TextView text;
然后定期调用
list.setAdapter(new SpannedAdapter(this, articleItemsHelper));
在哪里
articleItemsHelper
是
ArrayList<Spanned>
【问题讨论】:
【参考方案1】:旧线程,但我找到了另一种方法,它可以帮助人们:
simpleAdpt = new ArrayAdapter<Note>(this, R.layout.notelist, listeNotes )
public View getView(int position, View view, ViewGroup viewGroup)
View v = super.getView(position, view, viewGroup);
Note n = (Note) this.getItem(position);
((TextView)v).setText(Html.fromHtml("<b>"+n.getTitre() + "</b> <br/>"+n.getNote()));
return v;
;
【讨论】:
【参考方案2】:这是 ArrayAdapter 设置行文本的方式:
T item = getItem(position);
if (item instanceof CharSequence)
text.setText((CharSequence)item);
else
text.setText(item.toString());
如您所见,在您的情况下,它会调用toString
方法,这就是它不起作用的原因。所以,继续写你自己的适配器吧,在这种情况下你别无选择。
【讨论】:
哦,tnx。我在上面的帖子中发布了解决方案。以上是关于如何将 <Spanned> 放入 list.setAdapter?的主要内容,如果未能解决你的问题,请参考以下文章