[英]How to parse array data using Volley (TextView)
package com.sp.demoapiheader;
import androidx.appcompat.app.AppCompatActivity;
import android.os.Bundle;
import android.util.Log;
import android.widget.Button;
import android.widget.TextView;
import com.android.volley.AuthFailureError;
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.StringRequest;
import com.android.volley.toolbox.Volley;
import org.json.JSONArray;
import org.json.JSONException;
import org.json.JSONObject;
import java.util.HashMap;
import java.util.Map;
public class MainActivity extends AppCompatActivity {
private TextView mTextViewResult;
private RequestQueue mQueue;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
mTextViewResult = findViewById(R.id.text_view_result);
Button buttonParse = findViewById(R.id.button_parse);
StringRequest request = new StringRequest(Request.Method.GET, "http://datamall2.mytransport.sg/ltaodataservice/BusServices", new Response.Listener<String>() {
@Override
public void onResponse(String response) {
if (!response.equals(null)) {
Log.e("Your Array Response", response);
} else {
Log.e("Your Array Response", "Data Null");
}
}
}, new Response.ErrorListener() {
@Override
public void onErrorResponse(VolleyError error) {
Log.e("error is ", "" + error);
}
}) {
//This is for Headers If You Needed
@Override
public Map<String, String> getHeaders() throws AuthFailureError {
Map<String, String> params = new HashMap<String, String>();
params.put("Content-Type", "application/json; charset=UTF-8");
params.put("AccountKey", "XXXX==");
return params;
}
//Pass Your Parameters here
/*@Override
protected Map<String, String> getParams() {
Map<String, String> params = new HashMap<String, String>();
params.put("User", UserName);
params.put("Pass", PassWord);
return params;
}*/
};
RequestQueue queue = Volley.newRequestQueue(getApplicationContext());
queue.add(request);
}
}
I would like to parse the data into a textview and display each variable in a string/int format.我想将数据解析为 textview 并以字符串/整数格式显示每个变量。 As can be seen in the code, there's an simple XML file with a button and textview. Do i implement JSONArray or JSONObject at some point into the code?
从代码中可以看出,有一个带有按钮的简单 XML 文件和 textview。我是否在代码中的某个点实现了 JSONArray 或 JSONObject? Currently, the code only allows a response in the run tab.
目前,该代码仅允许在运行选项卡中进行响应。
You can achieve json array parser for two ways to shows in textview您可以通过两种方式实现 json 数组解析器,以在 textview 中显示
1) Gson convertor dependency 1) Gson 转换器依赖
dependencies {
implementation 'com.google.code.gson:gson:2.8.6'
}
@Override
public void onResponse(Call<ResponseBody> call, Response<ResponseBody> response) {
Log.d(TAG, "onResponse: " + response.body());
List<MenuResponseModel> listArr = new ArrayList<>();
Gson gson = new Gson();
StringBuffer stringBuffer = new StringBuffer();
try {
MenuResponseModel menuResponseModel = gson.fromJson(response.body().string(), MenuResponseModel.class);
if (menuResponseModel.getStaus().equals("1")) {
listArr.addAll(menuResponseModel.getData());
for (int i = 0; i < listArr.size(); i++) {
Integer price = Integer.parseInt(foodOrderList.get(i).getFood_quantity()) * Integer.parseInt(foodOrderList.get(i).getFood_price());
stringBuffer.append("\n\nFood Name: " + foodOrderList.get(i).getFood_name() + "\n Food Quantity : " + foodOrderList.get(i).getFood_quantity() + "\n Food Price :" + price.toString());
tv_order_details.setText(stringBuffer.toString());
}
}
} catch (Exception e) {
e.printStackTrace();
}
}
2) JSONArray classs 2) JSONArray 类
try {
JSONObject jsonObject = new JSONObject(response.body().string());
JSONArray jsonArray = jsonObject.getJSONArray("data");
for (int i = 0; i < jsonArray.length(); i++) {
JSONObject js = jsonArray.getJSONObject(i);
stringBuffer.append("Name :"+js.getString("customer_name")+" - Table No: "+js.getString("table_id")+js.getString("seats"));
} mTextViewResult.setText(stringBuffer.toString());
} catch (Exception e) {
e.printStackTrace();
}
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.