我试图从web服务获取json响应并将其放入arraylist中。然后,我想让arraylist进入recyclerview。我使用asynctask在后台执行它。 Web服务的响应是一个json数组。AsyncTask doInBackground返回arraylist
public class MainActivity extends AppCompatActivity {
String nombreChef;
Double ratingChef;
private RecyclerView rvMain;
private RVMainAdapter mRVMainAdapter;
private ArrayList<Chef> data= new ArrayList<>();
private class AsyncCallWS extends AsyncTask<Void, Void, Void>{
@Override
protected void onPreExecute() {
}
@Override
protected Void doInBackground(Void... params) {
SoapObject soapObject = new SoapObject(Conexion.NAMESPACE, Conexion.METHOD_NAME_CHEFS_CERCA);
soapObject.addProperty("idUser", Integer.valueOf(5));
SoapSerializationEnvelope envelope = new SoapSerializationEnvelope(SoapEnvelope.VER11);
envelope.dotNet = true;
envelope.setOutputSoapObject(soapObject);
HttpTransportSE httpTransportSE = new HttpTransportSE(Conexion.URL);
try {
httpTransportSE.call(Conexion.SOAP_ACTION_TPNAME, envelope);
String resultado = envelope.getResponse().toString();
JSONObject json = new JSONObject(resultado);
nombreChef=json.getString("nombre_chef");
ratingChef=json.getDouble("rating");
//IM NOT SURE HOW TO PUT THE ARRAY RESPONSE INTO ARRAYLIST????
data.add(new Chef(12,nombreChef,"Riuos","21","Jr los belepos",12,"Delivery",ratingChef.toString(),"Activo"));
}
catch (Exception e) {
Log.e("Estacion", e.getMessage());
//result = "0";
}
return null;
}
@Override
protected void onPostExecute(Void result) {
}
}
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
AsyncCallWS task = new AsyncCallWS();
task.execute();
rvMain = (RecyclerView) findViewById(R.id.rv_prueba);
rvMain.setLayoutManager(new LinearLayoutManager(MainActivity.this));
mRVMainAdapter = new RVMainAdapter(data);
rvMain.setAdapter(mRVMainAdapter);
}
这是来自Web服务的响应GSON:
谷歌“asynctasks如何工作” –
我没有得到你想告诉我的东西 – Pierre
请阅读[在什么情况下,我可以添加“紧急”或其他类似的短语,以获得更快的答案? (//meta.stackoverflow.com/q/326569) - 总结是,这不是解决志愿者的理想方式,并且可能会对获得答案产生反作用。请不要将这添加到您的问题。 – halfer