@Override
  public View getView(final int position, View convertView, ViewGroup parent) {
    switch (getItemViewType(position)) {
      case 0:
        if (convertView == null) {
          convertView = inflater.inflate(R.layout.index_nav_item_toptable, null, false);
        }
        TableView tableView = (TableView) convertView.findViewById(R.id.table);
        tableView.setContents(item.getTopTable().getContents(), item.getTopTable().getUrls());
        tableView.setOnContentClickListener(onContentClickListener);

        break;
      case 1:
        if (convertView == null) {
          convertView = inflater.inflate(R.layout.index_nav_item_ads, null, false);
        }
        final FitWidthImageView adsImage = (FitWidthImageView) convertView.findViewById(R.id.image);
        new AsyncTask<Void, Void, Bitmap>() {
          @Override
          protected Bitmap doInBackground(Void... params) {
            Bitmap bitmap = null;
            File image =
                new File(
                    Environment.getExternalStorageDirectory(),
                    Constants.SDCARD_HTML_FOLDER + "/" + item.getAdsImageUrl());
            if (image.exists()) {
              try {
                bitmap = BitmapFactory.decodeFile(image.getPath());
              } catch (Exception e) {
                e.printStackTrace();
              }
            }

            return bitmap;
          }

          @Override
          protected void onPostExecute(Bitmap result) {
            if (result != null) {
              adsImage.setImageBitmap(result);
              adsImage.setClickable(true);
              adsImage.setOnClickListener(
                  new OnClickListener() {
                    @Override
                    public void onClick(View v) {
                      if (onContentClickListener != null) {
                        onContentClickListener.onContentClick(item.getAdsUrl());
                      }
                    }
                  });
            }
          }
        }.execute();

        break;
      case 2:
        if (convertView == null) {
          convertView = inflater.inflate(R.layout.index_nav_item_bottomlist, null, false);
        }

        if (position == 2) {
          convertView.setBackgroundResource(R.drawable.bottomlist_bg_head);
        } else if (position == getCount() - 1) {
          convertView.setBackgroundResource(R.drawable.bottomlist_bg_foot);
        } else {
          convertView.setBackgroundResource(R.drawable.bottomlist_bg_middle);
        }

        final ImageView icon = (ImageView) convertView.findViewById(R.id.icon);
        new AsyncTask<Void, Void, Bitmap>() {
          @Override
          protected Bitmap doInBackground(Void... params) {
            Bitmap bitmap = null;
            File image =
                new File(
                    Environment.getExternalStorageDirectory(),
                    Constants.SDCARD_HTML_FOLDER
                        + "/"
                        + item.getBottomList().get(position - 2).getIconPath());
            if (image.exists()) {
              try {
                bitmap = BitmapFactory.decodeFile(image.getPath());
              } catch (Exception e) {
                e.printStackTrace();
              }
            }

            return bitmap;
          }

          @Override
          protected void onPostExecute(Bitmap result) {
            if (result != null) {
              icon.setImageBitmap(result);
            }
          }
        }.execute();
        ((TextView) convertView.findViewById(R.id.title))
            .setText(item.getBottomList().get(position - 2).getTitle());
        ((TextView) convertView.findViewById(R.id.subtitle))
            .setText(item.getBottomList().get(position - 2).getSubTitle());

        final LinearLayout tableContainer =
            (LinearLayout) convertView.findViewById(R.id.table_container);
        if (tableContainer.getChildCount() > 0) {
          tableContainer.removeAllViews();
        }
        final Table[] tables = item.getBottomList().get(position - 2).getTables();
        for (int i = 0; i < tables.length; i++) {
          if (tables[i].getTitle() != null && tables[i].getTitle().length() > 0) {
            View setionTitle =
                inflater.inflate(R.layout.index_nav_item_bottomlist_item_title, null, false);
            ((TextView) setionTitle.findViewById(R.id.setion_title)).setText(tables[i].getTitle());

            final int ii = i;
            setionTitle.setClickable(true);
            setionTitle.setOnClickListener(
                new OnClickListener() {
                  @Override
                  public void onClick(View v) {
                    if (onContentClickListener != null && tables[ii].getTitleUrl() != null) {
                      onContentClickListener.onContentClick(tables[ii].getTitleUrl());
                    }
                  }
                });
            tableContainer.addView(setionTitle);
          }
          TableView tableViewItem = new TableView(tableContainer.getContext());
          tableViewItem.setContents(tables[i].getContents(), tables[i].getUrls());
          tableViewItem.setOnContentClickListener(onContentClickListener);
          tableContainer.addView(tableViewItem);
        }

        final View divider = convertView.findViewById(R.id.divider);

        convertView
            .findViewById(R.id.title_layout)
            .setOnClickListener(
                new OnClickListener() {
                  @Override
                  public void onClick(View v) {
                    if (tableContainer.getVisibility() == View.GONE) {
                      tableContainer.setVisibility(View.VISIBLE);
                      if (position == getCount() - 1) {
                        divider.setVisibility(View.VISIBLE);
                      }
                    } else {
                      tableContainer.setVisibility(View.GONE);
                      if (position == getCount() - 1) {
                        divider.setVisibility(View.GONE);
                      }
                    }
                  }
                });

        break;
    }
    return convertView;
  }
 @Override
 public int getCount() {
   // TODO Auto-generated method stub
   return item.getBottomList().size() + 2;
 }