Question

I'm using eclipse + Android SDK on ubuntu.

I would like to print the name of a sensor type device, there a A LOT OF THEM and i want to do it automatically.

If i use a

Log.d("SENSORTYPE","Type: " + tempSensor.getType())

I print the (int) type, but i would like the name whom use the enum.

How could i do that?

Thants in advance.

Was it helpful?

Solution

For enumerations, you can obtain an array of all the constants and loop over them very easily using code such as this:

for(YourEnum value: YourEnum.values()){
    System.out.println("name="+value.name());
}

However, the Sensor class you link to isn't an enumeration, but contains a list of constants. There's no way to programatically loop over that list like an enumeration without specifying all the constants names.

However, you can create a static lookup that maps the ints to the String value you want to use, for example

Map<Integer,String> lookup = new HashMap<Integer,String>();
lookup.put(TYPE_ACCELEROMETER,"Accelerometer");
//Code a put for each TYPE, with the string you want to use as the name

You can use this like this:

Log.d("SENSORTYPE","Type: " + lookup.get(tempSensor.getType()));

This approach does mean you still have to write out each constant and update the list if the constants change, but you only have to do it once. It'd be a good idea to wrap the lookup in some kind of helper method or class depending on how widely you want to reuse it.

OTHER TIPS

you can introduce an abstract method and implement it in every enumeration

enum Colour {

Red {

    @Override
    String colourName() {
        return "Red";
    }
};

abstract String colourName();
}

This way gives you more flexibility, for example, if you don't want to display its programmatic name

Log.d("SENSORNAME", "NAME: " + tempSensor.name());
Licensed under: CC-BY-SA with attribution
Not affiliated with StackOverflow
scroll top