无法刷新 Spinner 所选项目的 ListView 以从 url 获取新数据

not able to refresh the ListView on Spinner's selected item to get new data from url

  1. 我无法刷新微调项的列表视图 select。
  2. 我想根据微调器的项目值构建新的 url 以获取新的 json 数据并转换为列表视图。
  3. 你也可以帮我告诉我如何创建一个方法来只传递新的 url 来获取新数据。
  4. 主要问题同题 我们将不胜感激您的每一次帮助。

    @Override public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) { // 膨胀这个片段的布局 查看视图 = inflater.inflate(R.layout.fragment1, 容器, 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();
    
        }
    });
    

    }

api 的 make 方法调用并传递 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();
    }
}