چطور مقدار حاصل از volley onResponse را return کنیم؟ (how to Returning values from volley onRespons ...
سلام
لطفا دوستانی که با کتابخانه volley سروکار دارند راهنمایی کنند
من یک کلاس جاوا ساختم که مقادیری رو بهش پاس میدم و اونجا هم از کتابخونه volley استفاده کردم و مقدایر رو به صفحه php پست میکنم و نتیجه برگشتی رو داخل یک list میریزم و در نهایت list رو return میکنم اما لیستی که بر میگرده خالی هستش بعد از دیباگ و بررسی خط به خط کدها متوجه شدم قبل از اینکه عملیات دانلود انجام بشه و کار کتابخونه volley response تموم بشه return انجام میشه و لیست که هنوز پر نشده به صورت خالی return میشه.
در stackoverflow این مشکل من رو خیلی ها داشتند و بار ها پرسیده شده و در همه موارد جوابش این بوده که باید از اینتر فیس استفاده کنیم و چند خط کد هم گذاشتن اما من با تمام تلاشی که کرم نتونستم از توضیحاتشون چیزی سر در بیارم.
چند نمونه جواب در stackoverflow
http://stackoverflow.com/questions/35558566/volley-how-do-i-return-the-arraylist-from-onresponse-method-in-volley
http://stackoverflow.com/questions/28120029/how-can-i-return-value-from-function-onresponse-of-volley
لطفا اگه کسی حوصلش رو داشتم یکم واضح تر برام توضیح بده دقیقا چیکار باید کرد
کدهای زیر برای کلاس من هستش.
package com.my.app.downloader;
import android.content.Context;
import android.util.Base64;
import android.util.Log;
import android.widget.Toast;
import com.android.volley.AuthFailureError;
import com.android.volley.Request;
import com.android.volley.RequestQueue;
import com.android.volley.Response;
import com.android.volley.VolleyError;
import com.android.volley.toolbox.StringRequest;
import com.android.volley.toolbox.Volley;
import com.carrot.singim.R;
import com.carrot.singim.adapter.CatGames_Data_Free;
import com.carrot.singim.utils.AddressUtils;
import org.json.JSONArray;
import org.json.JSONObject;
import java.util.ArrayList;
import java.util.HashMap;
import java.util.List;
import java.util.Map;
public class SignUp {
private Context context;
public List<String> startSignUp(Context con, final String userName, final String userPhone, final String userPass)
{
context = con;
final List<String> listEnd = new ArrayList<>();
RequestQueue queue = Volley.newRequestQueue(context);
StringRequest myRequest = new StringRequest(Request.Method.POST, AddressUtils.getSignUpUrl(),
new Response.Listener<String>() {
@Override
public void onResponse(String response) {
listEnd.add(response);
listEnd.add(response);
listEnd.add(response);
listEnd.add(response);
}
},
new Response.ErrorListener() {
@Override
public void onErrorResponse(VolleyError error) {
String e = context.getResources().getString(R.string.serverError);
showToast(e);
}
}
)
{
@Override
protected Map<String, String> getParams() throws AuthFailureError {
Map<String, String> params = new HashMap<>();
params.put("uname" , userName);
params.put("uphone", userPhone);
params.put("upass", userPass);
return params;
}
};
queue.add(myRequest);
return listEnd;
}
public void showToast (String error){
Toast.makeText(context, error, Toast.LENGTH_LONG).show();
}
}
پاسخگویی و مشاهده پاسخ های این سوال تنها برای اعضای ویژه سایت امکان پذیر است .
چنانچه تمایل دارید به همه بخش ها دسترسی داشته باشید میتوانید از این بخش لایسنس این آموزش را خریداری نمایید .