@Override
    public View getView(int i, View view, ViewGroup viewGroup) {
      final RecipeHolder holder;

      View listView = view;
      if (listView == null) {
        listView = lInflater.inflate(R.layout.item_recipe, null, true);
        holder = new RecipeHolder();
        holder.name = (TextView) listView.findViewById(R.id.name);
        holder.image = (ImageView) listView.findViewById(R.id.image);
        holder.ingredients = (TextView) listView.findViewById(R.id.ingredients);

        listView.setTag(holder);
      } else {
        holder = (RecipeHolder) listView.getTag();
      }

      final Recipe currentRecipe = recipes.get(i);
      holder.name.setText(currentRecipe.getName());
      LocalUtilities.setImageFromURL(currentRecipe.getThumbImage(), holder.image);

      // load ingredients
      StringBuilder strIngredients = new StringBuilder();
      Map<Integer, String> ingredients = currentRecipe.getIngredients();
      for (Map.Entry<Integer, String> entry : ingredients.entrySet()) {
        strIngredients.append(entry.getValue());
        strIngredients.append(", ");
      }
      holder.ingredients.setText(strIngredients.substring(0, strIngredients.length() - 2));
      return listView;
    }
Example #2
0
  private String createBookmarkText(ZLTextWordCursor cursor) {
    cursor = new ZLTextWordCursor(cursor);

    final StringBuilder builder = new StringBuilder();
    final StringBuilder sentenceBuilder = new StringBuilder();
    final StringBuilder phraseBuilder = new StringBuilder();

    int wordCounter = 0;
    int sentenceCounter = 0;
    int storedWordCounter = 0;
    boolean lineIsNonEmpty = false;
    boolean appendLineBreak = false;
    mainLoop:
    while ((wordCounter < 20) && (sentenceCounter < 3)) {
      while (cursor.isEndOfParagraph()) {
        if (!cursor.nextParagraph()) {
          break mainLoop;
        }
        if ((builder.length() > 0) && cursor.getParagraphCursor().isEndOfSection()) {
          break mainLoop;
        }
        if (phraseBuilder.length() > 0) {
          sentenceBuilder.append(phraseBuilder);
          phraseBuilder.delete(0, phraseBuilder.length());
        }
        if (sentenceBuilder.length() > 0) {
          if (appendLineBreak) {
            builder.append("\n");
          }
          builder.append(sentenceBuilder);
          sentenceBuilder.delete(0, sentenceBuilder.length());
          ++sentenceCounter;
          storedWordCounter = wordCounter;
        }
        lineIsNonEmpty = false;
        if (builder.length() > 0) {
          appendLineBreak = true;
        }
      }
      final ZLTextElement element = cursor.getElement();
      if (element instanceof ZLTextWord) {
        final ZLTextWord word = (ZLTextWord) element;
        if (lineIsNonEmpty) {
          phraseBuilder.append(" ");
        }
        phraseBuilder.append(word.Data, word.Offset, word.Length);
        ++wordCounter;
        lineIsNonEmpty = true;
        switch (word.Data[word.Offset + word.Length - 1]) {
          case ',':
          case ':':
          case ';':
          case ')':
            sentenceBuilder.append(phraseBuilder);
            phraseBuilder.delete(0, phraseBuilder.length());
            break;
          case '.':
          case '!':
          case '?':
            ++sentenceCounter;
            if (appendLineBreak) {
              builder.append("\n");
              appendLineBreak = false;
            }
            sentenceBuilder.append(phraseBuilder);
            phraseBuilder.delete(0, phraseBuilder.length());
            builder.append(sentenceBuilder);
            sentenceBuilder.delete(0, sentenceBuilder.length());
            storedWordCounter = wordCounter;
            break;
        }
      }
      cursor.nextWord();
    }
    if (storedWordCounter < 4) {
      if (sentenceBuilder.length() == 0) {
        sentenceBuilder.append(phraseBuilder);
      }
      if (appendLineBreak) {
        builder.append("\n");
      }
      builder.append(sentenceBuilder);
    }
    return builder.toString();
  }