2012-11-12 50 views
0

我在可擴展列表視圖中的數據綁定有問題。這裏我使用我想從android中的2d數組中刪除空列?

ArrayList<ExpandListGroup> list = new ArrayList<ExpandListGroup>(); 

ExpandListGroup用於數據綁定。但總之2d數組有空值。數據正在動態發生。

如:

String [] [] array1 = [[one,two,three,null],[seven,six,null]] ; 

我想從這個二維數組

回答

0

你需要採取一箇中間ArrayList和結果數組,並遵循以下步驟刪除空列。

  1. 首先將源數組(包含null)複製到arraylist中。
  2. 然後從陣列列表中刪除null
  3. 然後創建新數組並將數據從arraylist複製到數組。

    私人無效remove_nulls(){

     String [] [] array1 = {{"one","two","three",null},{"seven","six",null}} ; 
        ArrayList<ArrayList<String>> contact = new ArrayList<ArrayList<String>>(); 
    
        for(int i=0;i<array1.length;i++) 
        { 
         ArrayList<String> con = new ArrayList<String>(); 
         for(int j=0;j<array1[i].length;j++) 
         { 
    
          if(array1[i][j]!=null) 
          con.add(array1[i][j]); 
         } 
         if(con.size()>0) 
          contact.add(con); 
        } 
        String [] [] array2 = new String[array1.length][]; 
        for(int i=0;i<contact.size();i++) 
        { 
         array2[i]=new String[contact.get(i).size()]; 
         for(int j=0;j<contact.get(i).size();j++) 
         { 
          array2[i][j]=contact.get(i).get(j); 
         } 
        } 
    
    } 
    
0

除非有一些技巧的問題......

String[][] array1 = {{"one", "two", "three", null}, {"seven", "six", null}}; 

List<String[]> newList = new ArrayList<>(); 

for (int i = 0; i < array1.length; ++i) { 
    List<String> currentLine = new ArrayList<>(); 
    for (int j = 0; j < array1[i].length; ++j) { 
     if (array1[i][j] != null) { 
      currentLine.add(array1[i][j]); 
     } 
    } 
    //create the array in place 
    newList.add(currentLine.toArray(new String[currentLine.size()])); 
} 
//no need to use an intermediate array 
String[][] array2 = newList.toArray(new String [newList.size()][]); 

//And a test for array2 
for (int i = 0; i < array2.length; ++i) { 
    for (int j = 0; j < array2[i].length; ++j) { 
     System.out.print(array2[i][j] + " "); 
    } 
    System.out.println(); 
} 

System.out.println("Compared to..."); 
//Compared to the original array1 
for (int i = 0; i < array1.length; ++i) { 
    for (int j = 0; j < array1[i].length; ++j) { 
     System.out.print(array1[i][j] + " "); 
    } 
    System.out.println(); 
}