@Override
  public View getView(int position, View convertView, ViewGroup parent) {
    final ListItem listItem = getItem(position);

    if (convertView == null) {
      return listItem.build(getContext());
    } else {
      return listItem.updateView(getContext(), convertView);
    }
  }