2014-02-21 31 views
2

我无法设置我的阵列SelectedModes的大小。我有一个对话框复选框,我想发送有关哪些框已被选中的信息。如何正确设置数组的大小?

private boolean transportDialog() 
{ 
    String[] typeOfTransport; 

    typeOfTransport = new String[modes.length];  
    SelectedModes = new String[modes.length]; 
    final boolean[] itemsChecked = new boolean[modes.length]; 
    for (int i = 0; i < modes.length; i++) 
    {   
     typeOfTransport[i] = modes[i].Name; 

     if (modes[i].Selected == true) 
     { 
      itemsChecked[i] = true; 
     }   
    } 

    AlertDialog.Builder dialogBuilder = new AlertDialog.Builder(this); 
    dialogBuilder.setTitle("Select your transport:"); 
    dialogBuilder.setMultiChoiceItems(typeOfTransport, itemsChecked, new DialogInterface.OnMultiChoiceClickListener() 
    {   
     @Override 
     public void onClick(DialogInterface dialog, int which, boolean isChecked) 
     {    
      itemsChecked[which] = isChecked;     
     }   
    }); 

    dialogBuilder.setPositiveButton("Set", new DialogInterface.OnClickListener() 
    { 
     @Override 
     public void onClick(DialogInterface dialog, int which) 
     { 
      String selectetdVal = " ";    

      for (int i = 0; i < modes.length; i++) 
      {     
       if (itemsChecked[i]) 
       { 
       SelectedModes[i] = modes[i].Code; 
       selectetdVal = selectetdVal + modes[i].Name + " ";  
       itemsChecked[i]=false; 
       } 
      }  

      //textBox2.setText(selectetdVal); 
      try 
      { 
       mXmlRpcClient.call(mSetModesFunc, mSessionID, SelectedModes); 
      } catch (XMLRPCException e)    { 

       e.printStackTrace(); 
      }  
      Toast.makeText(MainWindow.this, selectetdVal,Toast.LENGTH_SHORT).show(); 
     } 

    });  

    AlertDialog alertDialog = dialogBuilder.create(); 
    alertDialog.show(); 
    return true; 
} 

所以我与运输typeOfTransport []类型的数组和我设置它的大小是它从服务器有多少种获取大小。另外每种类型的传输都有一个“代码”,我从服务器获得这是特定类型传输的代码。所以我想用复选框向用户显示对话框,让他选择他想检查的内容,并将传输的“代码”放入数组SelectedModes中。但是,我收到一个错误,我将NULL值发送回XML服务器。我猜测问题是数组太大,我只把值放在已经检查过的位置。那么你能告诉我如何将我的数组大小设置为与已检查的框一样大,并在数组中设置正确的“代码”值。

+2

使用ArrayList的例子,不要担心它的大小:) – Ragaisis

+0

但XMLRPC服务器接受字符串数组那将是一个问题吗? – user3182266

+0

你能告诉我你的意思吗?因为我不知道该怎么办? – user3182266

回答

3

如果你只是需要发送出哪个盒装已被检查,你可以使用位掩码
这是一个整数值,其中每个复选框都是二进制数中的数字。
因此,第一个是1,第二个是2,第三个是4,依此类推...

当您选中或取消选中该框时,您将设置或取消设置其值。
因此,如果第一个和第三个复选框被选中,您将添加1(0001)和4(0100)并获得5(0101)。另一方面,您将收到此int并“解码”它。

查看using bitmasks in Java

+0

哟,做了诡计谢谢! – user3182266

+0

开发......的基础知识) –