I have a custom Viewone in which I draw some text. I use various free otf / ttf font files that are available in the resources folder
public class ProjectView extends View {
private final Paint textPaint = new Paint(Paint.ANTI_ALIAS_FLAG);
private void init(Context context) {
textPaint.setStyle(Paint.Style.FILL);
textPaint.setAntiAlias(true);
typeface = Typeface.createFromAsset(context.getAssets(), "fonts" + File.separator + fontFileName);
textPaint.setTypeface(typeface);
}
}
Everything seems to work just fine, except for one thing: the words I draw are randomly mixed up, which means that the letters are accidentally replaced with other letters or characters.
Here is an example:

The correct word is in the left image, but sometimes it is drawn as in the correct image. The call invalidate()again, everything returns correctly, fixes the problem.
ListView, - , notifyDatasetChanged() . :
@Override
public View getView(int position, View convertView, ViewGroup parent) {
View view = convertView;
ViewHolder holder;
if (convertView == null) {
view = inflater.inflate(R.layout.list_item_fonts, null);
holder = new ViewHolder();
holder.txtFont = (TextView) view.findViewById(R.id.txtFont);
view.setTag(holder);
} else {
holder = (ViewHolder) view.getTag();
}
holder.txtFont.setPaintFlags(holder.txtFont.getPaintFlags() | Paint.SUBPIXEL_TEXT_FLAG | Paint.DEV_KERN_TEXT_FLAG);
holder.txtFont.getPaint().setSubpixelText(true);
holder.txtFont.setTextSize(TypedValue.COMPLEX_UNIT_SP, fonts.get(position).getSize());
holder.txtFont.setTypeface(Typeface.createFromAsset(context.getAssets(), "fonts" + File.separator + font.getFileName()));
}
, , . !