@Override
  @Background
  public void loadListFromFavorite() {
    try {
      String providerUri =
          preferences
              .provider()
              .get()
              .replace(Providers.SCHEME_HTTPS, "")
              .replace(Providers.SCHEME_HTTP, "");

      List<FavoriteImage> favoriteImages =
          new Select()
              .from(FavoriteImage.class)
              .where(Condition.column(FavoriteImage$Table.PREVIEWURL).like("%" + providerUri + "%"))
              .orderBy(false, FavoriteImage$Table.LAST)
              .queryList();
      for (Image image : favoriteImages) {
        this.images.add(image);
      }
      notifyDataSetChanged();
      if (this.images.size() == 0 && context != null) {
        ((MainActivity) context).makeToast(R.string.no_favorite);
        ((MainActivity) context).clearFavoriteMode();
      }
    } catch (Exception e) {
      e.printStackTrace();
      onError(e.getMessage());
    }
  }
  @Override
  public int getCount() {

    int count;

    String apiUri = preferences.provider().get();
    switch (apiUri) {
      case Providers.ANIME_PICTURES_URI:
        count = 80 * page;
        break;
      default:
        count = LIMIT * page;
    }
    return count;
  }
  @Background
  public void loadList(String tags) {

    try {
      page++;

      String apiUri = preferences.provider().get();

      RestAdapter restAdapter =
          new RestAdapter.Builder()
              .setEndpoint(apiUri)
              // .setLogLevel(RestAdapter.LogLevel.FULL)
              .build();

      List<? extends Image> images;

      switch (apiUri) {
        case Providers.DANBOORU_URI:
          Danbooru danbooru = restAdapter.create(Danbooru.class);
          images = danbooru.list(LIMIT, page, tags);
          break;
        case Providers.KONACHAN_URI:
        case Providers.YANDERE_URI:
          Moebooru moebooru = restAdapter.create(Moebooru.class);
          images = moebooru.list(LIMIT, page, tags);
          break;
        case Providers.BEHOIMI_URI:
          Behoimi behoimi = restAdapter.create(Behoimi.class);
          images = behoimi.list(LIMIT, page, tags);
          break;
        case Providers.ANIME_PICTURES_URI:
          AnimePictures animePictures = restAdapter.create(AnimePictures.class);
          AnimePicturesList animePicturesList;

          if (tags.isEmpty()) {
            animePicturesList = animePictures.list(page - 1, "json", "en");
          } else {
            animePicturesList = animePictures.search(page - 1, tags, "date", 0, "json", "en");
          }

          images = animePicturesList.getPreviews();
          break;
        case Providers.GELBOORU_URI:
          restAdapter =
              new RestAdapter.Builder()
                  .setEndpoint(apiUri)
                  // .setLogLevel(RestAdapter.LogLevel.FULL)
                  .setConverter(new SimpleXMLConverter())
                  .build();
          Gelbooru gelbooru = restAdapter.create(Gelbooru.class);
          GelbooruList gelbooruList = gelbooru.list(LIMIT, page - 1, tags);

          images = gelbooruList.getPost();

          break;
        default:
          images = new ArrayList<>();
      }

      for (Image image : images) {
        this.images.add(image);
      }
      notifyDataSetChanged();
    } catch (Exception e) {
      e.printStackTrace();
      page--;
      onError(e.getMessage());
    }
  }