【发布时间】:2014-03-22 16:23:54
【问题描述】:
我无法设置数组 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 服务器。我猜问题是数组太大了,我只把值放在已经检查过的位置。那么您能告诉我如何将数组的大小设置为与已选中的框一样大,并在数组中设置正确的“代码”值。
【问题讨论】:
-
使用 ArrayList 而不必担心它的大小 :)
-
但是 XMLRPC 服务器接受字符串数组会有问题吗?
-
你能告诉我你的意思吗,因为我不明白该怎么做?
标签: android arrays checkbox size