我有一个带有方法的Web服务,该方法返回一个带有两个值的ArrayList,在Android中,我需要保存在另一个ArrayList中,但是当我执行.add()时,会给我一个带有一个值[string,string]的ArrayList。
这是WebService方法的代码:
@WebMethod(operationName = "mostarNombre")
public ArrayList<String> mostarNombre(@WebParam(name = "id") int id) {
String nomb = "";
ArrayList<String> list = new ArrayList<String>();
try {
DriverManager.registerDriver(new OracleDriver());
Connection cn = DriverManager.getConnection("jdbc:oracle:thin:@localhost:xxx:xxx", xxxx, xxxx);
String query = "select * from ejemplo where id = 1";
Statement stmt = cn.createStatement();
ResultSet rs = stmt.executeQuery(query);
while (rs.next()) {
nomb = rs.getString("nombre");
String ids = rs.getString("id");
list.add(nomb);
list.add(ids);
}
} catch (SQLException ex) {
Logger.getLogger(Server.class.getName()).log(Level.SEVERE, null, ex);
}
return list;
}
这是我在Android方法中的代码:
public void consultar(View v){
try {
StrictMode.ThreadPolicy policy = new StrictMode.ThreadPolicy.Builder().permitNetwork().build();
StrictMode.setThreadPolicy(policy);
String resultadoFINAL;
//Creacion de la Solicitud
SoapObject request = new SoapObject(NAMESPACE, METHOD2);
//Creacion del Envelope
SoapSerializationEnvelope sobre = new SoapSerializationEnvelope(SoapEnvelope.VER11);
sobre.dotNet = true;
sobre.setOutputSoapObject(request);
//Creacion del transporte
HttpTransportSE transporte = new HttpTransportSE(URL);
// Paso de parámetro
PropertyInfo numeroEmp = new PropertyInfo();
numeroEmp.setName("numero");
request.addProperty(numeroEmp);
//Llamada
transporte.call(SOAPACTION2, sobre);
//Resultado
Object resultado = (Object) sobre.getResponse();
ArrayList<String> lista = new ArrayList<String>();
lista.add(resultado.toString());
String a = lista.get(0);
tvConsulta.setText(lista.get(0));
tvEj.setText(lista.get(1));
}catch (Exception e) {
e.printStackTrace();
}
}
当我执行lista.get(0)时,我得到一个值,例如[string,string]。我该如何解决?
编辑:
最终的解决方案是转换为Vector:
Vector lista = (Vector) sobre.getResponse();
答案 0 :(得分:0)
lista.add(resultado.toString());
首先,您必须了解toString的作用。 toString方法默认情况下会返回对象的引用(如果您不覆盖它的话)。这就是为什么它只存储一个引用数组列表的值是从Web服务返回的原因。
执行此操作
1-如果返回数组列表,则将其直接分配到arraylist中。
例如
ArrayList<String> lista=sobre.getResponse();
2-只是遍历结果并添加list。没有办法遍历list。我对每个循环都使用简单的方法。
for(String value:resultdo){
lista.add(value);
}