Hier ist mein Code, ich mag Liste von db füllen und es dann natürlich, aber ich habe Probleme bekommt, es tut asychronouz und wenn ich versuche Wert aus dieser Liste zu bekommen, Ich steige aus dem gebundenen Ausnahme, wie sollte ich diese Methode neu gestalten oder wie kann ich von Mainactivity anrufen, um dieses Problem zu lösen?Wie bekomme ich, wenn Volley fertig ist?
public class VolleySingleton extends Application {
public static final String TAG = VolleySingleton.class.getSimpleName();
private RequestQueue requestQueue;
private static VolleySingleton instance;
public static int count=0;
@Override
public void onCreate() {
super.onCreate();
instance = this;
}
public static synchronized VolleySingleton getInstance() {
return instance;
}
public RequestQueue getRequestQueue() {
if (requestQueue == null) {
requestQueue = Volley.newRequestQueue(getApplicationContext());
}
return requestQueue;
}
public <T> void addToRequestQueue(Request<T> req, String tag) {
req.setTag(TextUtils.isEmpty(tag) ? TAG : tag);
getRequestQueue().add(req);
count++;
}
public <T> void addToRequestQueue(Request<T> request) {
getRequestQueue().add(request);
}
public void cancelPendingRequests(Object tag) {
if (requestQueue != null) {
requestQueue.cancelAll(tag);
}
}
}
private static String TAG = JSonParse.class.getSimpleName();
public static List<Room> getRoomArray(String url, Context context) throws InterruptedException {
final List<Room> roomList = new ArrayList<>();
final CountDownLatch countDownLatch = new CountDownLatch(1);
JsonArrayRequest arrayRequest = new JsonArrayRequest(url, new Response.Listener<JSONArray>() {
@Override
public void onResponse(JSONArray response) {
Log.d(TAG, response.toString());
try {
Room room = null;
for (int i = 0; i < response.length(); i++) {
room = new Room();
JSONObject newRoom = (JSONObject) response.get(i);
room.setId(newRoom.getLong("id"));
room.setName(newRoom.getString("name"));
room.setActive(newRoom.getBoolean("active"));
roomList.add(room);
}
Helper.initList(roomList);
} catch (JSONException e) {
e.printStackTrace();
}
}
}, new Response.ErrorListener() {
@Override
public void onErrorResponse(VolleyError volleyError) {
volleyError.printStackTrace();
}
});
VolleySingleton.getInstance().addToRequestQueue(arrayRequest);
return roomList;
}
wie kann ich das tun? 3.While Aufruf Volley-Methode "getRoomArray()" übergeben Instanz 2.Umsetzung diese Schnittstelle in Ihrer Tätigkeit; –
1. eine Schnittstelle "public interface OnResponseReceived { public void responseReceived (JSONArray Antwort)}" erstellen Ihre Tätigkeit 4.Now können Sie die Methode „responseReceived (jsonArray)“ in Volley Antwort und übergeben Array, dass rufen methos.So Sie das Array in Ihrer Aktivität erhalten – rushi
Was ist der Grund für den downvote oben Antwort ist? – rushi