Java 当一个类已经有一个要指定的参数时,如何在一个方法中实现它?
因此,我正在遵循我的Android Studio教程,并制作一个琐事应用程序。这就是交易: 下面是一个文件QuestionBank.java:Java 当一个类已经有一个要指定的参数时,如何在一个方法中实现它?,java,android,android-studio,android-volley,Java,Android,Android Studio,Android Volley,因此,我正在遵循我的Android Studio教程,并制作一个琐事应用程序。这就是交易: 下面是一个文件QuestionBank.java: package com.example.triviaapp.data; import android.content.Context; import android.util.Log; import com.android.volley.Request; import com.android.volley.RequestQueue; import c
package com.example.triviaapp.data;
import android.content.Context;
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 org.json.JSONException;
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(Context context){
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);
for (int i = 0; i >= response.length(); i ++){
try {
questionArrayList.add(new Question(response.getJSONArray(i).getString(0),response.getJSONArray(i).getBoolean(1)));
} catch (JSONException e) {
e.printStackTrace();
}
}
}
},
new Response.ErrorListener() {
@Override
public void onErrorResponse(VolleyError error) {
}
});
AppController.getInstance(context).addToRequestQueue(jsonArrayRequest);
return questionArrayList;
}
}
package com.example.triviaapp.data;
导入android.content.Context;
导入android.util.Log;
导入com.android.volley.Request;
导入com.android.volley.RequestQueue;
导入com.android.volley.Response;
导入com.android.volley.VolleyError;
导入com.android.volley.toolbox.JsonArrayRequest;
导入com.android.volley.toolbox.volley;
导入com.example.triviaapp.controller.AppController;
导入com.example.triviaapp.models.Question;
导入org.json.JSONArray;
导入org.json.JSONException;
导入java.util.ArrayList;
导入java.util.List;
导入静态android.content.ContentValues.TAG;
公共类问题库{
ArrayList questionArrayList=新的ArrayList();
专用字符串url=”https://raw.githubusercontent.com/curiousily/simple-quiz/master/script/statements-data.json";
公共列表获取问题(上下文){
JsonArrayRequest JsonArrayRequest=新JsonArrayRequest(
Request.Method.GET,
网址,
(JSONArray)空,
新的Response.Listener(){
@凌驾
公共void onResponse(JSONArray响应){
Log.d(标签“onResponse:”+响应);
对于(int i=0;i>=response.length();i++){
试一试{
添加(新问题(response.getJSONArray(i).getString(0),response.getJSONArray(i).getBoolean(1));
}捕获(JSONException e){
e、 printStackTrace();
}
}
}
},
新的Response.ErrorListener(){
@凌驾
公共无效onErrorResponse(截击错误){
}
});
AppController.getInstance(上下文).addToRequestQueue(jsonArrayRequest);
返回问题列表;
}
}
正如您所看到的,当我在主活动中调用它时,我需要提供上下文(这个)。
这条线
AppController.getInstance(上下文).addToRequestQueue(jsonArrayRequest)
是命中注定的
AppController.getInstance().addToRequestQueue(jsonArrayRequest)
正如老师所说,但是我有一个错误,getInstance需要上下文。感谢SO,我找到了解决方案,并进行了更改(AppController是singleton类btw)
因此,我需要在MainActivity运行时从中获取上下文,并且必须对此进行更改
公共列表问题(){
为此:
公共列表获取问题(上下文){
问题解决了!(但是老师没有任何错误,我不知道为什么。)
然后在稍后的视频中,他说我们需要getQuestions()来实现类最终应答ListAsyncResponse回调
所以我修改的行应该是这样的:
公共列表getQuestions(最终答案列表AsyncResponse回调){
而我的括号中已经有上下文。我该怎么办?您可以将多个参数传递给一个函数 在您的情况下,您可以像这样传递上下文和回调
public List getQuestions(Context context, final AnswerListAsyncResponse callback){}
除了你在这里提出的问题之外,你应该,而不是实现。因此
ArrayList questionArrayList=new ArrayList();
变成List questionArrayList=new arrarylist();
(另外,questionList
会是一个更好的名字)