0

我在可扩展列表视图中的数据绑定有问题。我在这里使用

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

ExpandListGroup 用于数据绑定。但总和二维数组有空值。数据是动态的。

例如:

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

我想从这个二维数组中删除空列

4

2 回答 2

0

您需要获取中间数组列表和结果数组并按照以下步骤操作。

  1. 首先将源数组(包含空)复制到arraylist。
  2. 然后从 arraylist 中删除 null
  3. 然后创建新数组并将数据从数组列表复制到数组。

    私人无效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);
             }
         }
    
     }
    
于 2012-11-12T11:18:50.893 回答
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();
}
于 2012-11-12T11:33:55.743 回答