Avoid creating a new formatter if null
This can improve performance in certain cases, and has the advantage of controlling the "global" default formatter that is used for null cases.
This commit is contained in:
parent
18eec8f0e6
commit
2176873271
3 changed files with 22 additions and 6 deletions
|
@ -98,7 +98,7 @@ public abstract class Chart<T extends ChartData<? extends IDataSet<? extends Ent
|
|||
/**
|
||||
* default value-formatter, number of digits depends on provided chart-data
|
||||
*/
|
||||
protected DefaultValueFormatter mDefaultFormatter = new DefaultValueFormatter(0);
|
||||
protected DefaultValueFormatter mDefaultValueFormatter = new DefaultValueFormatter(0);
|
||||
|
||||
/**
|
||||
* paint object used for drawing the description text in the bottom right
|
||||
|
@ -305,8 +305,8 @@ public abstract class Chart<T extends ChartData<? extends IDataSet<? extends Ent
|
|||
setupDefaultFormatter(data.getYMin(), data.getYMax());
|
||||
|
||||
for (IDataSet set : mData.getDataSets()) {
|
||||
if (set.needsFormatter() || set.getValueFormatter() == mDefaultFormatter)
|
||||
set.setValueFormatter(mDefaultFormatter);
|
||||
if (set.needsFormatter() || set.getValueFormatter() == mDefaultValueFormatter)
|
||||
set.setValueFormatter(mDefaultValueFormatter);
|
||||
}
|
||||
|
||||
// let the chart know there is new data
|
||||
|
@ -393,7 +393,7 @@ public abstract class Chart<T extends ChartData<? extends IDataSet<? extends Ent
|
|||
int digits = Utils.getDecimals(reference);
|
||||
|
||||
// setup the formatter with a new number of digits
|
||||
mDefaultFormatter.setup(digits);
|
||||
mDefaultValueFormatter.setup(digits);
|
||||
}
|
||||
|
||||
/**
|
||||
|
@ -981,7 +981,7 @@ public abstract class Chart<T extends ChartData<? extends IDataSet<? extends Ent
|
|||
* @return
|
||||
*/
|
||||
public IValueFormatter getDefaultValueFormatter() {
|
||||
return mDefaultFormatter;
|
||||
return mDefaultValueFormatter;
|
||||
}
|
||||
|
||||
/**
|
||||
|
|
|
@ -268,7 +268,7 @@ public abstract class BaseDataSet<T extends Entry> implements IDataSet<T> {
|
|||
@Override
|
||||
public IValueFormatter getValueFormatter() {
|
||||
if (needsFormatter())
|
||||
return new DefaultValueFormatter(1);
|
||||
return Utils.getDefaultValueFormatter();
|
||||
return mValueFormatter;
|
||||
}
|
||||
|
||||
|
|
|
@ -18,6 +18,9 @@ import android.view.VelocityTracker;
|
|||
import android.view.View;
|
||||
import android.view.ViewConfiguration;
|
||||
|
||||
import com.github.mikephil.charting.formatter.DefaultValueFormatter;
|
||||
import com.github.mikephil.charting.formatter.IValueFormatter;
|
||||
|
||||
import java.util.List;
|
||||
|
||||
/**
|
||||
|
@ -233,6 +236,19 @@ public abstract class Utils {
|
|||
1, 10, 100, 1000, 10000, 100000, 1000000, 10000000, 100000000, 1000000000
|
||||
};
|
||||
|
||||
private static IValueFormatter mDefaultValueFormatter = generateDefaultValueFormatter();
|
||||
|
||||
private static IValueFormatter generateDefaultValueFormatter() {
|
||||
final DefaultValueFormatter formatter = new DefaultValueFormatter(1);
|
||||
return formatter;
|
||||
}
|
||||
|
||||
/// - returns: The default value formatter used for all chart components that needs a default
|
||||
public static IValueFormatter getDefaultValueFormatter()
|
||||
{
|
||||
return mDefaultValueFormatter;
|
||||
}
|
||||
|
||||
/**
|
||||
* Formats the given number to the given number of decimals, and returns the
|
||||
* number as a string, maximum 35 characters. If thousands are separated, the separating
|
||||
|
|
Loading…
Add table
Reference in a new issue