0

拡張可能なリストビューでのデータバインディングに問題があります。ここで私は使用します

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

データバインディング用のExpandListGroup。しかし、合計2D配列にはnull値があります。データは動的に送られてきます。

例えば:

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

この2次元配列からnull列を削除したい

4

2 に答える 2

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 に答える
0

中間配列リストと結果配列を取得する必要があり、以下の手順に従います。

  1. 最初にソース配列 (null を含む) を arraylist にコピーします。
  2. 次に、arraylist から 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);
             }
         }
    
     }
    
于 2012-11-12T11:18:50.893 に答える