cambio de android listview fuente y color

He encontrado muchas formas diferentes de lograr esto, pero no estoy seguro de cuál es la mejor para mi escenario.

Este es mi código Java para la vista de lista:

ListView lv;
lv = (ListView) findViewById(R.id.favList);

Este es el código xml para la lista:

<ListView
        android:id="@+id/favList"
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:layout_marginBottom="40dp"
        android:layout_marginLeft="30dp"
        android:layout_marginRight="30dp"
        android:layout_marginTop="20dp"
        android:background="@android:color/transparent"
        android:cacheColorHint="@android:color/transparent"
        android:listSelector="@android:color/transparent" >
    </ListView>

Para una vista de texto agregaría:

final Typeface fontList = Typeface.createFromAsset(assets, "optima-extra-black.ttf");
lv.setTypeface(fontList);

Pero esto no funciona para las vistas de lista. ¿Cómo cambio mi fuente en este caso?

Oke, estoy casi allí ... necesito acceder a mis activos pero no puedo desde mi adaptador personalizado. Traté de usarfinal AssetManager assets = this.getAssets(); pero eso no me llevará más lejos ..

¿Cómo abordar esto?

    class Myadapter extends BaseAdapter {

    LayoutInflater lif;
    ImageView sideArrow;
    TextView tv;


    public Myadapter(Context ctx) {
        lif = (LayoutInflater) ctx
                .getSystemService(LAYOUT_INFLATER_SERVICE);

    }

    @Override
    public int getCount() {

        return favarets.size();
    }

    @Override
    public Object getItem(int position) {
        return position;
    }

    @Override
    public long getItemId(int position) {
        return position;
    }

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

        View vi = convertView;
        if (convertView == null)
            vi = lif.inflate(R.layout.inflate, null);
        sideArrow = (ImageView) vi.findViewById(R.id.imageViewsidemark);

        tv = (TextView) vi.findViewById(R.id.textFav);
        tv.setText(favarets.get(position));
        final AssetManager assets = this.getAssets();
        final Typeface tvFont = Typeface.createFromAsset(assets, "OPTIMA.TTF");
        tv.setTypeface(tvFont);

        tv.setTextColor(Color.BLACK);

        return vi;

Respuestas a la pregunta(4)

Su respuesta a la pregunta