2012-01-10 18 views
7

ubuntu'da eclipse + Android SDK kullanıyorum.Numara ismini yazdırma

Bir sensör türü aygıtın adını yazdırmak istiyorum, orada bir A LOT OF THEM ve bunu otomatik olarak yapmak istiyorum. i

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

kullanırsanız

I (int) türü yazdırmak ama enum kullanmak adını istiyorum.

Bunu nasıl yapabilirim?

Önceden özünür.

numaralandırma için
+1

değil onun programatik adını görüntülemek için istemiyorsanız, örneğin, bu şekilde daha fazla esneklik veren her enumeration

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

bunu uygulayabilirsiniz "getName()" yöntemi çalışıyor? – rajpara

cevap

13

, bunun gibi çok kolay kodunu kullanarak üzerlerinde bir all sabitlerin dizi ve döngü elde edebilirsiniz: Ancak

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

, bağlantı Sensor sınıf bir değil numaralandırma, ancak sabitlerin bir listesini içerir. Tüm sabitler isimlerini belirtmeden bir numaralandırma gibi bu program üzerinde programlı olarak döngü yapmanın bir yolu yoktur.

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

Bu yaklaşım:

Ancak,

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 

Böyle kullanabilirsiniz örneğin, kullanmak istediğiniz dize değerine int'leri eşleştiren bir statik arama oluşturabilir Eğer sabitler değişse bile, her bir sabiti yazmanız ve listeyi güncellemeniz gerektiği anlamına gelir, ancak sadece bir kez yapmanız gerekir. Yeniden kullanmayı ne kadar yaygın olarak istediğinize bağlı olarak, bir çeşit yardımcı yöntem veya sınıfta arama yapmak iyi bir fikir olur.

3
Log.d("SENSORNAME", "NAME: " + tempSensor.name()); 
4

bir abstract yöntemini tanıtmak ve