public void init()

in app/src/main/java/com/google/reviewit/widget/VoteView.java [61:165]


  public void init(final Change change, Map<String, Integer> votes) {
    final WidgetUtil widgetUtil = new WidgetUtil(getContext());

    TreeSet<Integer> allVotingValues = new TreeSet<>();
    for (Map.Entry<String, LabelInfo> e : change.info.labels.entrySet()) {
      String labelName = e.getKey();
      for (String value : e.getValue().values.keySet()) {
        if (!change.info.permittedLabels.containsKey(labelName)
            || !change.info.permittedLabels.get(labelName).contains(value)) {
          continue;
        }
        allVotingValues.add(Integer.parseInt(value.trim()));
      }
    }

    TableRow tr = new TableRow(getContext());
    tr.setLayoutParams(matchAndWrapTableRowLayout());
    addView(tr, matchAndWrapTableLayout());
    View v = new View(getContext());
    v.setLayoutParams(matchAndWrapTableRowLayout());
    tr.addView(v);
    LinearLayout l = new LinearLayout(getContext());
    l.setLayoutParams(matchAndWrapTableRowLayout());
    l.setOrientation(HORIZONTAL);
    tr.addView(l);
    for (int value : allVotingValues) {
      TextView valueText = new TextView(getContext());
      LinearLayout.LayoutParams params =
          new LinearLayout.LayoutParams(
              ViewGroup.LayoutParams.WRAP_CONTENT,
              ViewGroup.LayoutParams.WRAP_CONTENT);
      params.weight = 1;
      valueText.setGravity(Gravity.CENTER_HORIZONTAL);
      valueText.setLayoutParams(params);
      valueText.setTextSize(TypedValue.COMPLEX_UNIT_SP, 16);
      valueText.setTypeface(Typeface.MONOSPACE);
      valueText.setText(FormatUtil.formatLabelValue(value));
      l.addView(valueText);
    }

    for (Map.Entry<String, LabelInfo> e :
        new TreeMap<>(change.info.labels).entrySet()) {
      final String labelName = e.getKey();
      LabelInfo label = e.getValue();

      tr = new TableRow(getContext());
      tr.setLayoutParams(matchAndWrapTableRowLayout());

      TextView labelNameText = new TextView(getContext());
      TableRow.LayoutParams params = wrapTableRowLayout();
      params.setMargins(0, widgetUtil.dpToPx(5), 0, 0);
      labelNameText.setLayoutParams(params);
      labelNameText.setTextSize(TypedValue.COMPLEX_UNIT_SP, 15);
      labelNameText.setText(labelName);
      tr.addView(labelNameText);

      RadioGroup rg = new RadioGroup(getContext());
      TableRow.LayoutParams rgParams = wrapTableRowLayout();
      rgParams.gravity = Gravity.CENTER_HORIZONTAL;
      rgParams.setMargins(widgetUtil.dpToPx(2), 0, widgetUtil.dpToPx(2), 0);
      rg.setLayoutParams(rgParams);
      rg.setOrientation(RadioGroup.HORIZONTAL);
      tr.addView(rg);

      final TextView infoText = new TextView(getContext());
      TableRow.LayoutParams infoTextParams = wrapTableRowLayout();
      infoTextParams.gravity = Gravity.CENTER_VERTICAL;
      infoText.setLayoutParams(infoTextParams);
      infoText.setTextSize(TypedValue.COMPLEX_UNIT_SP, 9);
      tr.addView(infoText);

      for (final Map.Entry<String, String> valueEntry
          : label.values.entrySet()) {
        if (!change.info.permittedLabels.containsKey(labelName)
            || !change.info.permittedLabels.get(labelName)
                .contains(valueEntry.getKey())) {
          continue;
        }

        RadioButton rb = new RadioButton(getContext());
        rg.addView(rb);

        final int value = Integer.parseInt(valueEntry.getKey().trim());

        rb.setOnClickListener(new OnClickListener() {
          @Override
          public void onClick(View v) {
            infoText.setText(valueEntry.getValue());

            for (OnSelectListener l : listeners) {
              l.onSelect(labelName, value);
            }
          }
        });

        int defaultValue = votes.containsKey(labelName) ? votes.get
            (labelName) : (label.defaultValue != null ? label.defaultValue : 0);
        if (value == defaultValue) {
          rb.performClick();
        }
      }

      addView(tr, matchAndWrapTableLayout());
    }
  }