猿问

如何将 ArrayAdapter 和 JSONArray 用于 listView

到目前为止,我可以向服务器发送一个 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。到目前为止我是对的吗?


这是我被卡住的地方,因为我不明白该怎么做。


浮云间
浏览 163回答 3
3回答

陪伴而非守候

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

www说

试试这个:您需要添加阵列适配器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,&nbsp;&nbsp;&nbsp; &nbsp; &nbsp; &nbsp;android.R.layout.simple_list_item, items));&nbsp;setListAdapter(mArrayAdapter);在Hashmap中添加设备ID它可以工作

慕桂英546537

服务器返回的 JSON 字符串是一个 Json 数组,所以你需要将它转换成一个 Jsonarray 如下,这里的 jsonString 是返回的 JSON 字符串。&nbsp; &nbsp; &nbsp; &nbsp; try {&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; JSONArray array=new JSONArray(jsonString);&nbsp; &nbsp; &nbsp; &nbsp; } catch (JSONException e) {&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; e.printStackTrace();&nbsp; &nbsp; &nbsp; &nbsp; }
随时随地看视频慕课网APP

相关分类

Java
我要回答