无法刷新 Spinner 所选项目的 ListView 以从 url 获取新数据
not able to refresh the ListView on Spinner's selected item to get new data from url
- 我无法刷新微调项的列表视图 select。
- 我想根据微调器的项目值构建新的 url 以获取新的 json 数据并转换为列表视图。
- 你也可以帮我告诉我如何创建一个方法来只传递新的 url 来获取新数据。
主要问题同题
我们将不胜感激您的每一次帮助。
@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();
}
}
- 我无法刷新微调项的列表视图 select。
- 我想根据微调器的项目值构建新的 url 以获取新的 json 数据并转换为列表视图。
- 你也可以帮我告诉我如何创建一个方法来只传递新的 url 来获取新数据。
主要问题同题 我们将不胜感激您的每一次帮助。
@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();
}
}