Just follow below steps which will help to you. and Custom adapter contains custom fonts for textview. Follow below steps.
1.Create Activity i.e MainActivity.java contains
package com.example.test;
import java.util.ArrayList;
import java.util.List;
import android.app.Activity;
import android.os.Bundle;
import android.widget.ListView;
public class MainActivity extends Activity {
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
ListView listView = (ListView) findViewById(R.id.listview);
List<City> cities = new ArrayList<City>();
for (int i = 1; i <= 10; i++) {
cities.add(new City(""+i, "City Name "+i));
}
CityAdapter adapter = new CityAdapter(getBaseContext(), cities);
listView.setAdapter(adapter);
}
}
2.layout file activity_main.xml with
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:tools="http://schemas.android.com/tools"
android:layout_width="match_parent"
android:layout_height="match_parent"
tools:context="${relativePackage}.${activityClass}" >
<ListView
android:id="@+id/listview"
android:layout_width="match_parent"
android:layout_height="match_parent" />
</RelativeLayout>
3.Now Create Class For City i.e City.java
package com.example.test;
public class City {
private String cityId;
private String cityName;
/**
* @param cityId
* @param cityName
*/
public City(String cityId, String cityName) {
super();
this.cityId = cityId;
this.cityName = cityName;
}
public String getCityId() {
return cityId;
}
public void setCityId(String cityId) {
this.cityId = cityId;
}
public String getCityName() {
return cityName;
}
public void setCityName(String cityName) {
this.cityName = cityName;
}
@Override
public String toString() {
return cityName;
}
}
4.Need to create adapter for city and which contains custom fonts CityAdapter.java
package com.example.test;
import java.util.List;
import android.content.Context;
import android.graphics.Typeface;
import android.view.LayoutInflater;
import android.view.View;
import android.view.ViewGroup;
import android.widget.ArrayAdapter;
import android.widget.TextView;
public class CityAdapter extends ArrayAdapter<City> {
private Context mContext;
private List<City> cities;
public CityAdapter(Context context,
List<City> list) {
super(context, R.layout.city_adapter, list);
this.mContext = context;
this.cities = list;
}
static class ViewHolder {
private TextView textView;
}
@Override
public View getView(int position, View convertView, ViewGroup parent) {
// TODO getview
ViewHolder viewHolder;
if (convertView == null) {
LayoutInflater inflater = (LayoutInflater) mContext
.getSystemService(Context.LAYOUT_INFLATER_SERVICE);
convertView = inflater.inflate(R.layout.city_adapter, parent, false);
viewHolder = new ViewHolder();
viewHolder.textView = (TextView) convertView.findViewById(R.id.textview);
viewHolder.textView.setTypeface(Typeface.createFromAsset(getContext().getAssets(), "fonts/roboto_bold.ttf"));
convertView.setTag(viewHolder);
}else{
viewHolder = (ViewHolder) convertView.getTag();
}
City city = cities.get(position);
if (city != null) {
viewHolder.textView.setText(city.getCityName());
}
return convertView;
}
}
5.with lyout for adapter city_adapter.xml below
<?xml version="1.0" encoding="utf-8"?>
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:padding="10dip" >
<TextView
android:id="@+id/textview"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_centerVertical="true"
android:layout_margin="10dip" />
</RelativeLayout>
You have to place your font in assets/fonts/xyz.ttf for my case font is roboto_bold.ttf which is at assets/fonts/roboto_bold.ttf and working fine. Just add your city object in list.