将字符串数组放入 JSONObject 的 onResponse 方法中的 ArrayAdapter 会产生 "No suitable Constructor" 错误
Putting a string array in ArrayAdapter inside onResponse method of JSONObject gives "No suitable Constructor" error
我正在使用 Volley library
从 MySQL 数据库中获取一些数据并将其放入 ID 为 "city_spinner" 的微调器中。我有一个名为 MainActivity 的 Activity
和一个名为 bookings 的片段。微调器位于片段 "bookings" 内。 "bookings.java" 的代码如下:
@Override
public void onViewCreated(View view, Bundle savedInstanceState) {
super.onViewCreated(view, savedInstanceState);
final RelativeLayout ld = (RelativeLayout)getView().findViewById(R.id.loader);
final RelativeLayout fb = (RelativeLayout)getView().findViewById(R.id.form_body);
final Spinner city_sp = (Spinner)getView().findViewById(R.id.city_sp);
requestQueue = Volley.newRequestQueue(getActivity().getApplicationContext());
JsonObjectRequest jsonObjectRequest = new JsonObjectRequest(Request.Method.POST, dataUrl, (String)null, new Response.Listener<JSONObject>() {
@Override
public void onResponse(JSONObject response) {
try{
JSONArray city = response.getJSONArray("city");
//I'll eventually put data from JSON into spinner, but even with String array it doesn't work.
String[] cities = new String[]{
"Select a City",
"City1",
"City2",
"City3"
};
//Gives me error in line below
ArrayAdapter<String> spinnerArrayAdapter = new ArrayAdapter<String>(
this,R.layout.my_spinner, cities
);
spinnerArrayAdapter.setDropDownViewResource(R.layout.my_spinner);
city_sp.setAdapter(spinnerArrayAdapter);
} catch (JSONException e){
e.printStackTrace();
}
}
}, new Response.ErrorListener() {
@Override
public void onErrorResponse(VolleyError error) {
error.printStackTrace();
}
});
requestQueue.add(jsonObjectRequest);
}
我得到的错误是:
Error:(151, 64) error: no suitable constructor found for ArrayAdapter(anonymous Listener< JSONObject>>,int,String[])
constructor ArrayAdapter.ArrayAdapter(Context,int,int) is not applicable
(argument mismatch; < anonymous Listener< JSONObject>> cannot be converted to Context)
constructor ArrayAdapter.ArrayAdapter(Context,int,String[]) is not applicable
(argument mismatch; <anonymous Listener< JSONObject>> cannot be converted to Context)
constructor ArrayAdapter.ArrayAdapter(Context,int,List< String>) is not applicable
(argument mismatch; < anonymous Listener< JSONObject>> cannot be converted to Context)
将该行更改为下面
ArrayAdapter<String> spinnerArrayAdapter = new ArrayAdapter<String>(
getActivity(),R.layout.my_spinner, cities
);
也在 JsonObjectRequest
的参数中用 null
替换 (String)null
我正在使用 Volley library
从 MySQL 数据库中获取一些数据并将其放入 ID 为 "city_spinner" 的微调器中。我有一个名为 MainActivity 的 Activity
和一个名为 bookings 的片段。微调器位于片段 "bookings" 内。 "bookings.java" 的代码如下:
@Override
public void onViewCreated(View view, Bundle savedInstanceState) {
super.onViewCreated(view, savedInstanceState);
final RelativeLayout ld = (RelativeLayout)getView().findViewById(R.id.loader);
final RelativeLayout fb = (RelativeLayout)getView().findViewById(R.id.form_body);
final Spinner city_sp = (Spinner)getView().findViewById(R.id.city_sp);
requestQueue = Volley.newRequestQueue(getActivity().getApplicationContext());
JsonObjectRequest jsonObjectRequest = new JsonObjectRequest(Request.Method.POST, dataUrl, (String)null, new Response.Listener<JSONObject>() {
@Override
public void onResponse(JSONObject response) {
try{
JSONArray city = response.getJSONArray("city");
//I'll eventually put data from JSON into spinner, but even with String array it doesn't work.
String[] cities = new String[]{
"Select a City",
"City1",
"City2",
"City3"
};
//Gives me error in line below
ArrayAdapter<String> spinnerArrayAdapter = new ArrayAdapter<String>(
this,R.layout.my_spinner, cities
);
spinnerArrayAdapter.setDropDownViewResource(R.layout.my_spinner);
city_sp.setAdapter(spinnerArrayAdapter);
} catch (JSONException e){
e.printStackTrace();
}
}
}, new Response.ErrorListener() {
@Override
public void onErrorResponse(VolleyError error) {
error.printStackTrace();
}
});
requestQueue.add(jsonObjectRequest);
}
我得到的错误是:
Error:(151, 64) error: no suitable constructor found for ArrayAdapter(anonymous Listener< JSONObject>>,int,String[])
constructor ArrayAdapter.ArrayAdapter(Context,int,int) is not applicable
(argument mismatch; < anonymous Listener< JSONObject>> cannot be converted to Context)
constructor ArrayAdapter.ArrayAdapter(Context,int,String[]) is not applicable
(argument mismatch; <anonymous Listener< JSONObject>> cannot be converted to Context)
constructor ArrayAdapter.ArrayAdapter(Context,int,List< String>) is not applicable
(argument mismatch; < anonymous Listener< JSONObject>> cannot be converted to Context)
将该行更改为下面
ArrayAdapter<String> spinnerArrayAdapter = new ArrayAdapter<String>(
getActivity(),R.layout.my_spinner, cities
);
也在 JsonObjectRequest
null
替换 (String)null