Я прошел курс по разработке Android и созданию викторины, в которой используется json. Мне нужно использовать синглтон для получения данных из Интернета. Итак, вот файл QuestionBank. java, который будет получать данные из Интернета и помещать их в журнал (пока только для тестирования). Затем, когда он заработает, мне придется закодировать его, чтобы поместить данные в объект вопроса:
package com.example.triviaapp.data;
import android.util.Log;
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.JsonArrayRequest;
import com.android.volley.toolbox.Volley;
import com.example.triviaapp.controller.AppController;
import com.example.triviaapp.models.Question;
import org.json.JSONArray;
import java.util.ArrayList;
import java.util.List;
import static android.content.ContentValues.TAG;
public class QuestionBank {
ArrayList<Question> questionArrayList = new ArrayList<>();
private String url = "https://raw.githubusercontent.com/curiousily/simple-quiz/master/script/statements-data.json";
public List<Question> getQuestions(){
JsonArrayRequest jsonArrayRequest = new JsonArrayRequest(
Request.Method.GET,
url,
(JSONArray) null,
new Response.Listener<JSONArray>() {
@Override
public void onResponse(JSONArray response) {
Log.d(TAG, "onResponse: " + response);
}
},
new Response.ErrorListener() {
@Override
public void onErrorResponse(VolleyError error) {
}
});
AppController.getInstance().addToRequestQueue(jsonArrayRequest);
return null;
}
}
В строке AppController.getInstance (). AddToRequestQueue (jsonArrayRequest); Я получаю эту ошибку:
getInstance (Context) в AppController не может быть применен к ().
Думаю, мне может понадобиться указать что-то в этих скобках .... Однако человек на видео использует именно этот код и не сталкивается с какими-либо проблемами.
Чтобы уточнить , AppController - это файл Singleton, а этот QuestionBank. java - это обычный java класс, который ничего не реализует и не расширяет.
Изменить: вот класс AppController:
package com.example.triviaapp.controller;
import android.app.Application;
import android.content.Context;
import android.graphics.Bitmap;
import android.util.LruCache;
import com.android.volley.Request;
import com.android.volley.RequestQueue;
import com.android.volley.toolbox.ImageLoader;
import com.android.volley.toolbox.Volley;
public class AppController {
private static AppController instance;
private RequestQueue requestQueue;
private ImageLoader imageLoader;
private static Context ctx;
private AppController(Context context) {
ctx = context;
requestQueue = getRequestQueue();
imageLoader = new ImageLoader(requestQueue,
new ImageLoader.ImageCache() {
private final LruCache<String, Bitmap>
cache = new LruCache<String, Bitmap>(20);
@Override
public Bitmap getBitmap(String url) {
return cache.get(url);
}
@Override
public void putBitmap(String url, Bitmap bitmap) {
cache.put(url, bitmap);
}
});
}
public static synchronized AppController getInstance(Context context) {
if (instance == null) {
instance = new AppController(context);
}
return instance;
}
public RequestQueue getRequestQueue() {
if (requestQueue == null) {
// getApplicationContext() is key, it keeps you from leaking the
// Activity or BroadcastReceiver if someone passes one in.
requestQueue = Volley.newRequestQueue(ctx.getApplicationContext());
}
return requestQueue;
}
public <T> void addToRequestQueue(Request<T> req) {
getRequestQueue().add(req);
}
public ImageLoader getImageLoader() {
return imageLoader;
}
}