pkelly pkelly - 1 year ago 151
Android Question

java.lang.IllegalArgumentException: Can't have a viewTypeCount < 1

I'm getting this error:

java.lang.IllegalArgumentException: Can't have a viewTypeCount < 1

I'm pretty sure I know exactly what's causing it, but I don't know how to fix it.

My app loads a users friends from the database. When the user has at least 1 friend to put in the list view, it's fine. When the user is brand new and has no friends yet, the app crashes because the listview has a count of 0.

Is this simply a case of error handling?

If I don't post all the necessary relevant code please let me know!

Here is my adapter:

public class MyAdapter extends ArrayAdapter<HashMap<String, String>> {

Context context;
int resourceId;
LayoutInflater inflater;
private Context mContext;


public int getViewTypeCount() {

return getCount();

public int getItemViewType(int position) {

return position;

ArrayList<HashMap<String, String>> items;
public MyAdapter (Context context, int resourceId, ArrayList<HashMap<String, String>> items)
super(context, resourceId, items);
mContext = context;
this.items =items;
inflater = (LayoutInflater)context.getSystemService(Context.LAYOUT_INFLATER_SERVICE);

public View getView(int position, View convertView, ViewGroup parent){
final ViewHolder holder;
if (convertView == null){

convertView = inflater.inflate(R.layout.list_item, null);

holder = new ViewHolder();
holder.fbphoto = (ImageView)convertView.findViewById(; = (TextView)convertView.findViewById(;


} else {

holder = (ViewHolder)convertView.getTag();

final HashMap<String,String> item = (HashMap<String,String> ) items.get(position);
if (item != null)

String facebookProfilePicUrl = ""+item.get(TAG_FACEBOOKID)+"/picture?width=150&height=150";



return convertView;

public class ViewHolder
ImageView fbphoto;
TextView name;


Answer Source

I think you miss the point of ViewTypeCount. You should return the number of Different View Types in your list. This is important for recycling of the Views inside the List.

Imaging you have 2 Types of Listitems, one with a white Background and one with black Background. When you return 2 as ViewTypeCount the Listview knows ok, there a 2 types of Listitems and will not mix them up in the getView view recycling.

so just use:

   public int getViewTypeCount() {                 
        return 1;

or dont override that method at all.

Recommended from our users: Dynamic Network Monitoring from WhatsUp Gold from IPSwitch. Free Download