显示来自 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);
我一直在尝试从我的 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);