显示来自 JSON 的数据使用 Volley for Network 解析并显示在自动完成文本上

Display Data from JSON Parse and Display it on Autocomplete Text Using Volley for Network

我一直在尝试从我的 API 中解析 json 数据,但未能成功: 预期输出:一旦我在自动完成文本中输入名称,它应该显示最近的名称列表或以该字符开头的名称,反之亦然。它应该像自动完成文本一样工作。 我做了很多研究。请帮帮我。 我不知道如何在自动完成文本上显示 json 值。

我得到 json 输出,我使用 StringRequest 解析它但没有成功。

JSON:

[{"c_name":"Arafat"},{"c_name":"Krishna Naik"},{"c_name":"Samih kuttan"}]

构造函数代码:

private String name;

public ListCustomer(String name){
    this.name=name;
}

public String getName(){
    return name;
}
public void setName(String name) {
    this.name = name;
}`

StringRequest 的 Listname 方法:

public void ListCustomernames(){
    StringRequest stringRequest = new StringRequest(Request.Method.GET,
            URLs.URL_listpopupwindow,
            new Response.Listener<String>() {

                @Override
                public void onResponse(String response) {
                    try {
                        //converting the string to json array object
                        JSONArray array = new JSONArray(response);

                        List<String> responseList = new ArrayList<String>();
                        for(int i=0;i< array.length();i++){
                            //getting user object from json array

                            final JSONObject jsonObjec = array.getJSONObject(i);
                                    //jsonObjec.getString("c_name");
                            ListCustomer listCustomer=new ListCustomer(
                                    jsonObjec.getString("c_name"));

                            responseList.add(listCustomer);

                        }


                        ArrayAdapter<String> adapter = new ArrayAdapter<String> (getApplicationContext(),android.R.layout.simple_dropdown_item_1line, responseList);
                        mVoiceInputTv.setAdapter(adapter);
                        mVoiceInputTv.setThreshold(1);
                        //ArrayAdapter adapter=new ArrayAdapter(this,android.R.layout.simple_list_item_1,);
                       // mVoiceInputTv.setAdapter(adapter);

                    }

                    catch (JSONException e) {
                        e.printStackTrace();
                    }
                    //stopping the swipeRefeshLayout
                    //swipeRefreshLayout.setRefreshing(false);
                }
            },

            new Response.ErrorListener() {
                @Override
                public void onErrorResponse(VolleyError  volleyError) {
                    Toast.makeText(getApplicationContext(), volleyError.getMessage(), Toast.LENGTH_SHORT).show();
                    //swipeRefreshLayout.setRefreshing(false);
                }
            });
    RequestQueue requestQueue= Volley.newRequestQueue(this);
    requestQueue.add(stringRequest);

}

尝试使用 GSON 它确实简化了 JSON 解析

你可能应该这样做。 JSONArray array = new JSONArray(响应);

                    List<String> responseList = new ArrayList<String>();
                    String name;
                    for(int i=0;i< array.length();i++){                         
                        name = array.getJSONObject(i).getString("c_name");                             
                        responseList.add(name);
                    }
                    ArrayAdapter<String> adapter = new ArrayAdapter<String> (getApplicationContext(),android.R.layout.simple_dropdown_item_1line, responseList);
                    mVoiceInputTv.setAdapter(adapter);

你也可以这样做

  List<String> responseList = new ArrayList<String>();
                String name;
                for(int i=0;i< array.length();i++){                         
                    final JSONObject jsonObjec = array.getJSONObject(i);
                                //jsonObjec.getString("c_name");
                        ListCustomer listCustomer=new ListCustomer(
                                jsonObjec.getString("c_name"));                         
                    responseList.add(listCustomer.getName());
                }
                ArrayAdapter<String> adapter = new ArrayAdapter<String> (getApplicationContext(),android.R.layout.simple_dropdown_item_1line, responseList);
                mVoiceInputTv.setAdapter(adapter);

最好的方法是

List<String> responseList = new ArrayList<String>();
            String name;
            List<ListCustomer> listnames=new ArrayList();
            for(int i=0;i< array.length();i++){                         
                final JSONObject jsonObjec = array.getJSONObject(i);
                            //jsonObjec.getString("c_name");
                    listnames.setName(jsonObjec.getString("c_name"));                         
                responseList.add(listnames.get(i).getName());
            }
            ArrayAdapter<String> adapter = new ArrayAdapter<String> (getApplicationContext(),android.R.layout.simple_dropdown_item_1line, responseList);
            mVoiceInputTv.setAdapter(adapter);