无法刷新 Spinner 所选项目的 ListView 以从 url 获取新数据
Posted
技术标签:
【中文标题】无法刷新 Spinner 所选项目的 ListView 以从 url 获取新数据【英文标题】:not able to refresh the ListView on Spinner's selected item to get new data from url 【发布时间】:2018-08-30 13:20:32 【问题描述】:-
我无法刷新微调器项目选择的列表视图。
我想根据 spinner 的 items 值构建新的 url 以获取新的 json 数据并转换为 listview。
您还可以帮助我告诉我如何创建一种方法来传递新的 url 以获取新数据。
主要问题与标题相同 您的每一个帮助将不胜感激。
@覆盖 public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) // 膨胀这个片段的布局 View view = inflater.inflate(R.layout.fragment1, container, false);
String [] array_values = "All "," 5"," 4"," 3"," 2"," 1";
final Spinner spinner = view.findViewById(R.id.spinner);
final ArrayAdapter<String> spinner_adapter = new ArrayAdapter<>(this.getActivity(), android.R.layout.simple_spinner_item, array_values);
spinner_adapter.setDropDownViewResource(android.R.layout.simple_dropdown_item_1line);
spinner.setAdapter(spinner_adapter);
final String spinnerValue = spinner.getSelectedItem().toString();
url = "http://website.com/demo.php?pswd=kvpswd";
listView = (ListView) view.findViewById(R.id.demo_list_view);
adapter = new CustomListAdapter(this.getActivity(), List);
listView.setAdapter(adapter);
spinner.setOnItemSelectedListener(new AdapterView.OnItemSelectedListener()
public void onItemSelected(AdapterView<?> parent, View view, int pos, long id)
// listView.setAdapter(null);
String spinnerValue = spinner.getSelectedItem().toString();
url = "http://website.com/demo.php?pswd="+spinnerValue;
adapter.notifyDataSetChanged();
public void onNothingSelected(AdapterView<?> parent)
);
// Creating volley request obj
JsonArrayRequest Requset = new JsonArrayRequest(url,
new Response.Listener<JSONArray>()
@Override
public void onResponse(JSONArray response)
Log.d(TAG, response.toString());
hidePDialog();
// Parsing json
for (int i = 0; i < response.length(); i++)
try
JSONObject obj = response.getJSONObject(i);
DataFetcher datafetcher = new DataFetcher();
datafetcher.set1(obj.getString("item1"));
datafetcher.set2(obj.getString("item2"));
datafetcher.set3(obj.getString("item3"));
datafetcher.set4(obj.getString("item4"));
datafetcher.set5(obj.getString("item5"));
datafetcher.set6(obj.getString("item6"));
datafetcher.set7(obj.getString("item7"));
datafetcher.set8(obj.getString("item8"));
// adding list to list array
List.add(datafetcher);
catch (JSONException e)
e.printStackTrace();
// notifying list adapter about data changes
// so that it renders the list view with updated data
adapter.notifyDataSetChanged();
, new Response.ErrorListener()
@Override
public void onErrorResponse(VolleyError error)
VolleyLog.d(TAG, "Error: " + error.getMessage());
hidePDialog();
);
【问题讨论】:
【参考方案1】:为 api 调用和传递 url 和设置数据到列表视图的方法。 下面的方法进入微调器选择时间。
private void callApiData(String url)
// Creating volley request obj
JsonArrayRequest Requset = new JsonArrayRequest(url,
new Response.Listener<JSONArray>()
@Override
public void onResponse(JSONArray response)
Log.d(TAG, response.toString());
hidePDialog();
// Parsing json
for (int i = 0; i < response.length(); i++)
try
JSONObject obj = response.getJSONObject(i);
DataFetcher datafetcher = new DataFetcher();
datafetcher.set1(obj.getString("item1"));
datafetcher.set2(obj.getString("item2"));
datafetcher.set3(obj.getString("item3"));
datafetcher.set4(obj.getString("item4"));
datafetcher.set5(obj.getString("item5"));
datafetcher.set6(obj.getString("item6"));
datafetcher.set7(obj.getString("item7"));
datafetcher.set8(obj.getString("item8"));
// adding list to list array
List.add(datafetcher);
setAdapter();
catch (JSONException e)
e.printStackTrace();
// notifying list adapter about data changes
// so that it renders the list view with updated data
adapter.notifyDataSetChanged();
, new Response.ErrorListener()
@Override
public void onErrorResponse(VolleyError error)
VolleyLog.d(TAG, "Error: " + error.getMessage());
hidePDialog();
);
并且还为适配器设置另一种方法。
private void setAdapter()
if(adpter==null)
adapter = new CustomListAdapter(this.getActivity(), List);
listView.setAdapter(adapter);
adapter.notifyDataSetChanged();
else
adapter.notifyDataSetChanged();
【讨论】:
它无法正常工作..它将新数据从 url 添加到列表视图的末尾而不清除旧数据..请帮助我 当你获取数据时,时间列表将像获取数据之前使用的 List.clear() 方法一样被清除。 // 在你的数组列表对象中列出。以上是关于无法刷新 Spinner 所选项目的 ListView 以从 url 获取新数据的主要内容,如果未能解决你的问题,请参考以下文章
如何将图像视图的可见性设置为 Spinner 所选项目的可见性
Android:两个 Spinner onItemSelected()