JSON ListView不刷新

时间:2015-05-01 10:09:08

标签: android arrays json listview

我有Android应用程序与JSON Listview,我有单选按钮,当我选择其中任何一个时,json文件的链接将被更改,但它不会更改,这是我的代码(知道字符串猫是链接的变化):

        /* @#@#@#@# JSON Items ListView @#@#@#@# */

    listView = (ListView) findViewById(R.id.itemsLayoutList);
    adapter = new CustomListAdapterZ(this, movieList);
    listView.setAdapter(adapter);


    pDialog = new ProgressDialog(this);
    // Showing progress dialog before making http request
    pDialog.setMessage("Loading...");
    pDialog.show();

    if(rd1.isChecked())
    {
        cat = "Starter";

    }
    else if(rd2.isChecked())
    {
        cat = "Desserts";

    }
    else if(rd3.isChecked())
    {
        cat = "Beverages";

    }
    else if(rd4.isChecked())
    {
        cat = "Open Buffet";

    }


    // Creating volley request obj
    JsonArrayRequest movieReq = new JsonArrayRequest(
            "http://users.abdullahadhaim.com/users/WebServiceResturant.asmx/getFoodItems?categoryName="
                    + cat, 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);
                            Movie movie = new Movie();
                            movie.setTitle(obj.getString("title"));
                            movie.setThumbnailUrl(obj.getString("image"));
                            movie.setPrice(((Number) obj.get("price"))
                                    .doubleValue());
                            movie.setOrderNum(obj.getInt("categoryno"));
                            movie.setCategory(obj.getString("category"));

                            // adding movie to movies array
                            movieList.add(movie);

                        } 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();

                }
            });

    // Adding request to request queue
    AppController.getInstance().addToRequestQueue(movieReq);

    /* @#@#@#@# JSON Items ListView END @#@#@#@# */

2 个答案:

答案 0 :(得分:0)

您可以尝试:

// notifying list adapter about data changes
// so that it renders the list view with updated data
adapter.clear();
adapter.addAll(movieList);
adapter.notifyDataSetChanged();

成功回调

答案 1 :(得分:0)

movieList.clear();
movieList.addAll(movie);
adapter.notifyDataSetChanged();

希望它能解决你的问题,
使用单选按钮

时,使用Radio Group改进代码