为了账号安全,请及时绑定邮箱和手机立即绑定

如何将 ArrayAdapter 和 JSONArray 用于 listView

如何将 ArrayAdapter 和 JSONArray 用于 listView

浮云间 2021-06-17 18:11:09
到目前为止,我可以向服务器发送一个 Get 请求,并在 url 中添加一个字母:private void GetDevice() {    String deviceId = editTextDeviceId.getText().toString().trim();    if(TextUtils.isEmpty(deviceId)){        editTextDeviceId.setError("Please enter deviceId");        editTextDeviceId.requestFocus();    }    HashMap<String, String>params = new HashMap<>();    params.put("deviceID", deviceId);    PerformNetworkRequest request = new PerformNetworkRequest(Api.URL_GETBYDEVICEID + deviceId, null, CODE_GET_REQUEST);    request.execute();}当我按下按钮搜索它发送请求:buttonSearch.setOnClickListener(new View.OnClickListener() {        @Override        public void onClick(View view) {            GetDevice();        }    });服务器响应是 JSONArray :W/System.err: org.json.JSONException: Value [{"DeviceId":"T","TransactionValue":2,"RSSI":2,"Time":"2018-08-02T14:43:00"}] of type org.json.JSONArray cannot be converted to JSONObject这是我的问题。根据我的阅读,我知道我需要使用 ArrayList 和 ArrayAdapter 将其转换为 JSONObject。到目前为止我是对的吗?这是我被卡住的地方,因为我不明白该怎么做。
查看完整描述

3 回答

?
陪伴而非守候

TA贡献1757条经验 获得超8个赞

您发送的参数是 a JSONArray,而服务器需要的参数是JSONObject. 的结构JSONObject类似于{  },而 aJSONArray类似于[ { } , { } , ......  , { } ]。所以,您可以将参数更改为{"DeviceId":"T","TransactionValue":2,"RSSI":2,"Time":"2018-08-02T14:43:00"} 或编辑服务器的代码以接收参数JSONArray

查看完整回答
反对 回复 2021-06-30
?
www说

TA贡献1775条经验 获得超8个赞

试试这个:


您需要添加阵列适配器


ArrayList<String> items = new ArrayList<String>();

for(int i=0; i < jArray.length() ; i++) {

json_data = jArray.getJSONObject(i);

String deviceID=json_data.getString("deviceID");

items.add(deviceID);

Log.d(deviceID,"Output"+deviceID);

}


ArrayAdapter<String> mArrayAdapter = new ArrayAdapter<String>(this,  

       android.R.layout.simple_list_item, items));

 setListAdapter(mArrayAdapter);

在Hashmap中添加设备ID它可以工作


查看完整回答
反对 回复 2021-06-30
?
慕桂英546537

TA贡献1848条经验 获得超10个赞

服务器返回的 JSON 字符串是一个 Json 数组,


所以你需要将它转换成一个 Jsonarray 如下,这里的 jsonString 是返回的 JSON 字符串。


        try {

            JSONArray array=new JSONArray(jsonString);

        } catch (JSONException e) {

            e.printStackTrace();

        }


查看完整回答
反对 回复 2021-06-30
  • 3 回答
  • 0 关注
  • 162 浏览

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信