【发布时间】:2019-07-01 05:51:52
【问题描述】:
我正在使用自动完成文本视图,它动态地从服务器检索数据。此自动完成文本视图位于自定义对话框中。一切正常,但唯一的问题是,当我尝试检索选定的自动完成值时,它给了我 null价值。
这是我在片段中的声明 -
AutoCompleteTextView sp_city;
ArrayAdapter<GetMyCityAdapter> spinneradapter;
List<GetMyCityAdapter> getMyCityAdapter1;
private ArrayList<String> city = new ArrayList<String>();
这是我的对话框代码-
btn_searchfreelancerfilter.setOnClickListener(new View.OnClickListener() {
@RequiresApi(api = Build.VERSION_CODES.LOLLIPOP)
@Override
public void onClick(View view) {
final AlertDialog.Builder dialogBuilder = new AlertDialog.Builder(getActivity());
// ...Irrelevant code for customizing the buttons and title
LayoutInflater inflater = getActivity().getLayoutInflater();
final View dialogView = inflater.inflate(R.layout.freelancerfilterdialog, null);
dialogBuilder.setView(dialogView);
dialogBuilder.setCancelable(true);
dialogBuilder.setTitle("Search Freelancer");
sp_city.setOnItemSelectedListener(new AdapterView.OnItemSelectedListener() {
@Override
public void onItemSelected(AdapterView<?> adapterView, View view, int i, long l) {
selectedcityvalue = spinneradapter.getItem(i).getCity_name();
}
@Override
public void onNothingSelected(AdapterView<?> adapterView) {
}
});
sp_city = (AutoCompleteTextView) dialogView.findViewById(R.id.sp_sf_city);
loadCity();
dialogBuilder.setPositiveButton("Search", new DialogInterface.OnClickListener() {
@RequiresApi(api = Build.VERSION_CODES.LOLLIPOP)
public void onClick(DialogInterface dialog, int id) {
LoadFilteredData(selectedcityvalue);
}
});
final AlertDialog alertDialog = dialogBuilder.create();
alertDialog.show();
}
});
这是我的loadCity方法代码-
private void loadCity() {
StringRequest stringRequest = new StringRequest(Request.Method.POST, URL_CITY, new Response.Listener<String>() {
@Override
public void onResponse(String response_city) {
showJSONCITY(response_city);
}
},
new Response.ErrorListener() {
@Override
public void onErrorResponse(VolleyError error) {
Log.d("Error", "" + error);
}
}) {
@Override
protected Map<String, String> getParams() throws AuthFailureError {
Map<String, String> params = new HashMap<String, String>();
return params;
}
};
RequestQueue requestQueue = Volley.newRequestQueue(getActivity());
int socketTimeout = 30000;
RetryPolicy policy = new DefaultRetryPolicy(socketTimeout, DefaultRetryPolicy.DEFAULT_MAX_RETRIES, DefaultRetryPolicy.DEFAULT_BACKOFF_MULT);
stringRequest.setRetryPolicy(policy);
requestQueue.add(stringRequest);
}
private void showJSONCITY(String response_city) {
try {
JSONObject jsonObject = new JSONObject(response_city);
JSONArray data = jsonObject.getJSONArray("data");
for (int i = 0; i < data.length(); i++) {
JSONObject jsonObject1 = data.getJSONObject(i);
GetMyCityAdapter getMyCityAdapter2 = new GetMyCityAdapter("0", "select_type");
getMyCityAdapter2.setCity_id(jsonObject1.getString("c_id"));
getMyCityAdapter2.setCity_name(jsonObject1.getString("c_name"));
getMyCityAdapter1.add(getMyCityAdapter2);
city.add(jsonObject1.getString("c_name"));
}
ArrayList<GetMyCityAdapter> citylist = new ArrayList<>();
for (int i = 0; i < city.size(); i++) {
citylist.add(new GetMyCityAdapter(getMyCityAdapter1.get(i).getCity_id(), getMyCityAdapter1.get(i).getCity_name()));
}
spinneradapter = new ArrayAdapter<GetMyCityAdapter>(getActivity(), android.R.layout.simple_spinner_dropdown_item, citylist);
sp_city.setAdapter(spinneradapter);
sp_city.setThreshold(1);
sp_city.setSelection(0);
} catch (JSONException e) {
e.printStackTrace();
}
}
我已成功检索数据。自动完成功能已填充来自服务器的数据。只是在 setitemclicklistener 上没有检索到它。 没有错误,但在检索所选值时给出空值。
【问题讨论】:
-
您成功从服务器检索数据不是吗?只是autoComplete中没有传入数据?
-
请打印原始响应以查看响应是否包含您想要的数据
-
尝试从你的 cityList 而不是适配器中获取选定的值
-
我已成功检索数据。自动完成功能已填充来自服务器的数据。只是在 setitemclicklistener @FreelancsAndroidLovesyou 上没有检索到它
-
@AgiMaulana 它确实得到了响应。但我无法获得选定的值
标签: android autocomplete dialog spinner android-alertdialog