MPAndroidChart:如何将BarEntry格式化为字符串?

时间:2016-05-13 13:54:44

标签: android mpandroidchart

我有一个带X值的水平条形图。现在我只能用这样的浮点值创建一个BarEntry:

<form class="form-signin" method="post" id="register-form">

  <h2 class="form-signin-heading">Unit specification</h2>
  <hr />

  <div id="error">
    <!-- error will be showen here ! -->
  </div>

  <div class="form-group">
    <input type="text" class="form-control" name="unit_name" id="unit_name" />
  </div>

  <div class="form-group">
    <input type="text" class="form-control" name="unit_group" id="unit_group" />
  </div>

  <div class="form-group">
    <select class="selectpicker" name="unit_block" id="unit_block">
      <option>A</option>
      <option>B</option>
    </select>
  </div>

  <div class="form-group">
    <select class="selectpicker" name="unit_row_big" id="unit_row_big">
      <option>1</option>
      <option>2</option>
      <option>3</option>
    </select>
  </div>

  <div class="form-group">
    <select class="selectpicker" name="unit_row" id="unit_row">
      <option>1</option>
      <option>2</option>
      <option>3</option>
      <option>4</option>
      <option>5</option>
      <option>6</option>
      <option>7</option>
      <option>8</option>
      <option>9</option>
      <option>10</option>
      <option>11</option>
      <option>12</option>
    </select>
  </div>

  <div class="form-group">
    <select class="selectpicker" name="unit_column" id="unit_column">
      <option>1</option>
      <option>2</option>
      <option>3</option>
      <option>4</option>
      <option>5</option>
    </select>
  </div>


  <div class="form-group">
    <select class="selectpicker" name="unit_size" id="unit_size">
      <option>Small</option>
      <option>Medium</option>
      <option>Large</option>
    </select>
  </div>


  <hr />

  <div class="form-group text-center">
    <button type="submit" class="btn btn-default" name="btn-save" id="btn-submit">Insert</button>
  </div>


</form>

我还添加了自定义格式化程序

BarEntry barEntry = new BarEntry( (float )iAmountInCents / 100, ++ index,item.getKey());
valueSet1.add(barEntry);

但是从不调用getFormattedValue()方法 这导致图表中的栏上出现类似的情况:0.400。我希望条形图上的这个值看起来像这样&#34; $ .40&#34; 。我怎样才能做到这一点?

enter image description here

1 个答案:

答案 0 :(得分:0)

您正在将格式化程序设置在错误的位置。您正在YAxis上设置格式化程序。相反,您需要在要分配给图表的BarDataSet对象上设置格式化程序。

创建一个从ValueFormatter

扩展的Formatter类
public class MyValueFormatter implements ValueFormatter {

    private DecimalFormat mFormat;

    public MyValueFormatter() {
        mFormat = new DecimalFormat("###,###,###,##0.0");
    }

    @Override
    public String getFormattedValue(float value, Entry entry, int dataSetIndex, ViewPortHandler viewPortHandler) {
        return mFormat.format(value) + " $";
    }
}

每当使用

将数据集分配给图表时,都必须放置格式化程序
BarDataSet set1 = new BarDataSet(yVals1, "DataSet 1");
set1.setValueFormatter(new MyValueFormatter());