如何解决com.android.volley.parseerror org.json.jsonexception:java.lang.String 类型的值连接无法转换为 JSONArray
public class carParts extends AppCompatActivity {
ListView list;
JSONArray data;
customAdapter2 cust_adapater;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_car_parts);
list = findViewById(R.id.listviewC);
getdatafromdb();
}
@Override
protected void onResume(){
getdatafromdb();
super.onResume();
}
public void getdatafromdb(){
String url = "http://192.168.1.111/androidProject/getcarparts.PHP";
RequestQueue queue = Volley.newRequestQueue(this);
JsonArrayRequest jsonArrayRequest = new JsonArrayRequest (Request.Method.GET,url,null,new
Response.Listener<JSONArray>() {
@Override
public void onResponse(JSONArray response) {
data = response;
cust_adapater = new customAdapter2(carParts.this,data);
list.setAdapter(cust_adapater);
}
},new Response.ErrorListener() {
@Override
public void onErrorResponse(VolleyError error)
{ // Todo: Handle error
Toast.makeText(getApplicationContext(),"Error:"+error.toString(),Toast.LENGTH_SHORT).show();
} });
queue.add(jsonArrayRequest);
}
}
我的 CustomApater 代码:
public class customAdapter2 extends BaseAdapter {
Context con;
JSONArray data;
LayoutInflater inflater;
// constructor
public customAdapter2(Context c,JSONArray data) {
this.con = c;
this.data = data;
inflater = (LayoutInflater) c.getSystemService(Context.LAYOUT_INFLATER_SERVICE);
}
public class Holder {
TextView nametxtv,typetxtv,pricetxtv,quantitytxtv;
ImageView deleteimage;
}
@Override
public int getCount() {
return data.length();
}
@Override
public Object getItem(int i) {
// i is the clicked position and is filled by Android return null;
return null;
}
@Override
public long getItemId(int i) {
return 0;
}
@Override
public View getView(int i,View view,ViewGroup viewGroup) {
final Holder holder = new Holder();
final View rowView;
rowView = inflater.inflate(R.layout.row,null);
//initialize the fields in the listview row
holder.nametxtv = rowView.findViewById(R.id.tvName);
holder.pricetxtv = rowView.findViewById(R.id.tvprice);
holder.quantitytxtv = rowView.findViewById(R.id.tvquantity);
holder.typetxtv = rowView.findViewById(R.id.tvtype);
holder.deleteimage = rowView.findViewById(R.id.delete);
// fill them with data:
// Data is in the json object that was passed to the constructor
// and we named it "data".
// extract the object from the json array
//optJSONObject() is the same as getJSONObject() but better in case the object is null
// i is the current position,it increments itself
JSONObject obj = data.optJSONObject(i);
try {
holder.nametxtv.setText(obj.getString("name"));
holder.typetxtv.setText(obj.getString("type"));
holder.pricetxtv.setText(obj.getInt("price"));
holder.quantitytxtv.setText(obj.getInt("quantity"));
holder.deleteimage.setTag(obj.getInt("id"));
holder.deleteimage.setonClickListener(new View.OnClickListener() {
@Override
public void onClick(View view) {
String url = "http://192.168.1.111/androidProject/deleteitem.PHP?id=" + holder.deleteimage.
getTag();
RequestQueue queue = Volley.newRequestQueue(con);
StringRequest request = new StringRequest(Request.Method.GET,new Response.Listener<String>() {
@Override
public void onResponse(String response) {
// check whether delete was successful or not
// remember that PHP returns "success" or "fail"
if (response.equals("success")) { // force the listview to refresh
// call onresume in the acitivty again
((carParts) con).onResume();
} else {
Toast.makeText(con,"Delete Failed.",Toast.LENGTH_SHORT).show();
}
}
},new Response.ErrorListener() {
@Override
public void onErrorResponse(VolleyError error) {
Toast.makeText(con,"Error:" + error.toString(),Toast.LENGTH_SHORT).show();
}
});
queue.add(request);
}
});
} catch (JSONException e) {
}
return rowView;
}
}
所以过去几天我一直在开发这个应用程序,一切都运行顺利,我可以将数据发送到我的数据库,但是每当我想取回数据时,我都会在标题中找到错误 谁能告诉我是什么问题,我看不到代码有什么问题,但仍然无法正常工作
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。