2014-08-27 18 views
0

我想寫我的Listview不同的顏色。我怎樣才能選擇只有不重複的顏色?我如何檢查color.xml中的重複項Android

我已經嘗試了我的代碼,但它仍然沒有發現重複的顏色。

謝謝。

編輯:

現在我有一個appColors.xml,它有大約250顏色的十六進制編碼。我想在ListView中顯示xml的hexCode項目。我可以在列表視圖中顯示所有的XML項目值,但我想在我的列表視圖中只顯示不重複的十六進制代碼。那麼,如何刪除重複項目?

Field [] fields = R.color.class.getDeclaredFields(); 
    String [] names = new String[fields.length]; 
    String [] values = new String[fields.length]; 
    int [] colors = new int [fields.length]; 

    try 
    { 
     for(int i=0; i<fields.length; i++) 
     {  
      used=false; 

      if(i>1){ 
      for(int k=0; k<i-1; k++){ 


       if(getString(fields[i].getInt(null)).equals((getString(fields[k].getInt(null))))){ 
        used=true; 
        break; 
       } 

      }} 

      if(used==false){ 

       names [i] = fields[i+3].getName();       
       colors [i] = fields[i+3].getInt(null); 
       values [i] = getString(fields[i+3].getInt(null)); 

      }   

     } 

    } 
     catch (Exception ex){} 

    for(int i=0;i<fields.length-4;i++){ 

     addClass.adding(values[i], i+1, colors[i]);  
    } 
+0

我很抱歉,但我不明白你在做什麼。你能解釋一些細節嗎? – dzsonni 2014-08-27 12:42:41

+0

你可以有一個顏色列表的顏色已經不同了嗎? – PedroAGSantos 2014-08-27 12:45:23

+0

我有大約200種顏色,一些顏色hexcode是相同的。我只是刪除重複的十六進制代碼 – 2014-08-27 12:49:24

回答

0

使用此代碼,而不是,我測試了一下,工作正常。

Field [] fields = R.color.class.getDeclaredFields(); 

ArrayList<String> colorNames = new ArrayList<String>(); 
String colorName; 
try 
{ 
    for(int i=0; i<fields.length; i++) 
    {  
     colorName = getResources().getString(fields[i].getInt(null)); 
     if(!colorNames.contains(colorName)) 
     { 
      colorNames.add(colorName); 
      //this is a unique color name 
      //process it here 
     } 
    } 

} 
catch (Exception ex){ 
    //Handle exception 
} 

for (String string : colorNames) { 
    Log.i("COLOR", string); 
    // Get your colors here 
} 
+0

yepp,謝謝lott – 2014-08-27 13:34:31

+0

uhmm,我如何顯示重複的項目一次? – 2014-08-27 14:08:22

+0

例如 #FFF #aaa #FFF我會顯示一個時間#FFF和#aaa – 2014-08-27 14:09:34

0

您的代碼看起來有點複雜。這裏是我的建議 用這樣的結構製作一個彩色文件。

<string-array name="color_list"> 
    <item>black#000000</item> 
    <item>blue#0000FF</item> 
</string-array> 

看你做的顏色像

String[] myColorList = getResources().getStringArray(R.array.color_list); 
Map uniqueColorList = new HashMap(); 
for(int i=0;i<myColorList.length;i++) 
{ 
    String []colorAndVaue = myStrings[i].split("#"); 
    System.out.println("name "+ colorAndValue[0] + " value:" colorAndValue[1]); 
    uniqueColorList.put(colorAndValue[1],colorAndValue[0]); 
} 
+0

但即時通訊使用反射, – 2014-08-27 13:16:16

+0

Field [] fields = R.color.class.getDeclaredFields ();我如何將split(「#」)方法轉換爲Field []? – 2014-08-27 13:17:18