我有这个自定义数组适配器:
public class CustomAdapter extends ArrayAdapter<DataObj>
{
int layoutResourceId;
List<DataObj> data;
Activity activity;
Typeface iconFont;
public CustomAdapter(Activity activity, int layoutResourceId, List<DataObj> data)
{
super(activity, layoutResourceId, data);
this.layoutResourceId = layoutResourceId;
this.activity = activity;
this.data = data;
iconFont = Typeface.createFromAsset(activity.getAssets(), "icons.ttf" );
}
public static class ViewHolder
{
public TextView icon;
public TextView name;
}
@Override
public View getView(int position, View convertView, ViewGroup parent)
{
View row = convertView;
ViewHolder holder;
if (row == null)
{
LayoutInflater layoutInflater = (LayoutInflater) activity.getSystemService(Context.LAYOUT_INFLATER_SERVICE);
row = layoutInflater.inflate(R.layout.event_type_list_row, null);
holder = new ViewHolder();
holder.icon = (TextView) row.findViewById(R.id.layout_icon_EditText);
holder.name = (TextView) row.findViewById(R.id.layout_name_EditText);
row.setTag(holder);
}
else
{
holder = (ViewHolder) row.getTag();
}
final DataObj obj = data.get(position);
if (eventType != null)
{
holder.icon.setText(obj.getIconCode());
holder.icon.setTypeface(iconFont);
holder.name.setText(obj.getName());
}
return row;
}
}
而不是图标我看到代码(我使用IcoMoon作为我的图标字体)。可以看到我的应用程序中静态创建的其他图标,但在这里我看到了: 我的代码出了什么问题?
以下是它静态时的工作原理(它不是图像,它是IcoMoon的字体):
注意:我尝试使用其他字体(不是图标字体)并且它有效,似乎只有图标字体不起作用。
答案 0 :(得分:0)
为什么你不尝试:
TextView text = new TextView();
String str = "some text";
SpannableStringBuilder sb = new SpannableStringBuilder(str);
sb.setSpan(iconFont, 0, str.length(), Spannable.SPAN_EXCLUSIVE_EXCLUSIVE);
text.setTextSize(18);
text.setText(sb);
答案 1 :(得分:0)
问题在于设置字体。当eventType不为null但您在eventType为null时重置它时,您正在设置字体。一旦单元格具有字体集,当eventType为null时,它可能会再次被重用。在这种情况下,holder.icon仍将使用旧字体而不是默认字体。
if (eventType != null)
{
holder.icon.setText(obj.getIconCode());
holder.icon.setTypeface(iconFont);
holder.name.setText(obj.getName());
} else {
holder.icon.setTypeface(defaultFont);
...
}
答案 2 :(得分:0)
你正试图将图像设置为文本,因此如果我没有弄错的话,它会显示出来。看看这个答案,它会帮助你。 How to use icons and symbols from "Font Awesome" on Native Android Application
答案 3 :(得分:0)
您确定名称是否正确?
当你这样做时:
iconFont = Typeface.createFromAsset(activity.getAssets(), "icons.ttf" );
“图标” 字体的正确名称是什么?
除此之外,由于字体总是相同的,你可以在持有人内声明它。
holder = new ViewHolder();
holder.icon = (TextView) row.findViewById(R.id.layout_icon_EditText);
holder.name = (TextView) row.findViewById(R.id.layout_name_EditText);
holder.icon.setTypeface(iconFont);
row.setTag(holder);
答案 4 :(得分:0)
为我解决的是这样做:
holder.icon.setText(Html.fromHtml(eventType.getIconCode()));