Android 如何从URL将Json数据放入微调器?
我在文本框中获取json,我试图将这些数据放入spinner,但无法这样做。下面是我的主要活动课,我正在使用截击Android 如何从URL将Json数据放入微调器?,android,android-layout,android-studio,android-spinner,android-json,Android,Android Layout,Android Studio,Android Spinner,Android Json,我在文本框中获取json,我试图将这些数据放入spinner,但无法这样做。下面是我的主要活动课,我正在使用截击 public class Mainactivity extends Activity { private String urlJsonArry = "https://www.abc.json"; private static String TAG = MainActivity.class.getSimpleName(); pr
public class Mainactivity extends Activity {
private String urlJsonArry = "https://www.abc.json";
private static String TAG = MainActivity.class.getSimpleName();
private Button btnMakeArrayRequest;
// Progress dialog
private ProgressDialog pDialog;
private TextView txtResponse,txtResponse2,txtResponse3,txtResponse4;
// temporary string to show the parsed response
private String jsonResponse, jsonResponse2, jsonResponse3, jsonResponse4;
Spinner spinner;
ArrayAdapter<String> adapter;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.spinners);
spinner= (Spinner) findViewById(R.id.spinner);
btnMakeArrayRequest = (Button) findViewById(R.id.btnArrayRequest);
txtResponse = (TextView) findViewById(R.id.txtResponse);
txtResponse2 = (TextView) findViewById(R.id.txtResponse2);
txtResponse3 = (TextView) findViewById(R.id.txtResponse3);
// txtResponse4 = (TextView) findViewById(R.id.txtResponse4);
pDialog = new ProgressDialog(this);
pDialog.setMessage("Please wait...");
pDialog.setCancelable(false);
btnMakeArrayRequest.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
// making json array request
makeJsonArrayRequest();
}
});
}
private void makeJsonArrayRequest () {
showpDialog();
JsonObjectRequest req = new JsonObjectRequest(urlJsonArry,
new Response.Listener<JSONObject>() {
@Override
public void onResponse(JSONObject response) {
Log.d(TAG, response.toString());
try {
JSONArray array = response.getJSONArray("results");
// Parsing json array response
// loop through each json object
jsonResponse = "";
for (int i = 0; i < array.length(); i++) {
JSONObject person = (JSONObject) array
.get(i);
System.out.println(person.toString());
String syllabus = person.getString("grade");
String grade = person.getString("grade");
String subject = person.getString("subject");
jsonResponse += "Board: " + syllabus + "\n\n";
jsonResponse2 += "Class: " + grade + "\n\n";
jsonResponse3 += "Subject: " + subject + "\n\n";
// jsonResponse4 += "ID: " + id + "\n\n";
//Getting Compile time error here
adapter= new ArrayAdapter<String>(this, android.R.layout.simple_spinner_item,array);
adapter.setDropDownViewResource(android.R.layout.simple_spinner_dropdown_item);
spinner.setAdapter(adapter);}
txtResponse.setText(jsonResponse);
txtResponse2.setText(jsonResponse2);
txtResponse3.setText(jsonResponse3);
//txtResponse4.setText(jsonResponse4);
} catch (JSONException e) {
e.printStackTrace();
Toast.makeText(getApplicationContext(),
"Error: " + e.getMessage(),
Toast.LENGTH_LONG).show();
}
hidepDialog();
}
}, new Response.ErrorListener() {
@Override
public void onErrorResponse(VolleyError error) {
VolleyLog.d(TAG, "Error: " + error.getMessage());
Toast.makeText(getApplicationContext(),
error.getMessage(), Toast.LENGTH_SHORT).show();
hidepDialog();
}
});
公共类Mainactivity扩展活动{
专用字符串urlJsonArry=”https://www.abc.json";
私有静态字符串标记=MainActivity.class.getSimpleName();
私人按钮btnMakeArrayRequest;
//进度对话框
私人对话;
私有文本视图txtResponse、txtResponse2、txtResponse3、txtResponse4;
//显示已解析响应的临时字符串
私有字符串jsonResponse、jsonResponse2、jsonResponse3、jsonResponse4;
纺纱机;
阵列适配器;
@凌驾
创建时受保护的void(Bundle savedInstanceState){
super.onCreate(savedInstanceState);
setContentView(R.layout.spinners);
微调器=(微调器)findViewById(R.id.spinner);
btnMakeArrayRequest=(按钮)findViewById(R.id.btnArrayRequest);
txtResponse=(TextView)findViewById(R.id.txtResponse);
txtResponse2=(TextView)findViewById(R.id.txtResponse2);
txtResponse3=(TextView)findViewById(R.id.txtResponse3);
//txtResponse4=(TextView)findViewById(R.id.txtResponse4);
pDialog=新建进度对话框(此对话框);
setMessage(“请稍候…”);
pDialog.setCancelable(假);
btnMakeArrayRequest.setOnClickListener(新视图.OnClickListener(){
@凌驾
公共void onClick(视图v){
//发出json数组请求
makeJsonArrayRequest();
}
});
}
私有void makeJsonArrayRequest(){
showpDialog();
JsonObjectRequest req=新的JsonObjectRequest(urlJsonArry,
新的Response.Listener(){
@凌驾
公共void onResponse(JSONObject响应){
Log.d(TAG,response.toString());
试一试{
JSONArray数组=response.getJSONArray(“结果”);
//解析json数组响应
//循环遍历每个json对象
jsonResponse=“”;
对于(int i=0;i
您需要使用活动上下文此
不是活动上下文尝试如下
adapter= new ArrayAdapter<String>(Mainactivity.this, android.R.layout.simple_spinner_item, array);
adapter=newArrayAdapter(Mainactivity.this,android.R.layout.simple\u微调器\u项,数组);
编辑:
更改数组格式。例如,在微调器中,要显示主题,请执行以下操作
String[] mySubject = new String[array.length()];
for (int i = 0; i < array.length(); i++) {
JSONObject person = (JSONObject) array
.get(i);
System.out.println(person.toString());
String syllabus = person.getString("grade");
String grade = person.getString("grade");
String subject = person.getString("subject");
jsonResponse += "Board: " + syllabus + "\n\n";
jsonResponse2 += "Class: " + grade + "\n\n";
jsonResponse3 += "Subject: " + subject + "\n\n";
// jsonResponse4 += "ID: " + id + "\n\n";
mySubject[i] = subject;
}
adapter= new ArrayAdapter<String>(this, android.R.layout.simple_spinner_item, mySubject);
adapter.setDropDownViewResource(android.R.layout.simple_spinner_dropdown_item);
spinner.setAdapter(adapter);
String[]mySubject=新字符串[array.length()];
对于(int i=0;iadapter= new ArrayAdapter<String>(this, android.R.layout.simple_spinner_item,array);
adapter= new ArrayAdapter<String>(MainActivity.this, android.R.layout.simple_spinner_item,array);