截击中的请求队列不能应用于视图模型

问题描述 投票:0回答:1

正在尝试将我的JSON数据加载到扩展android View Model的视图模型类中,而我无法获取请求队列的上下文

随android视图模型扩展的View Model类将被观察者用来将产品列表加载到产品适配器的onChanged方法中

这是我的视图模型类代码


public class ProductViewModel extends AndroidViewModel {

    private MutableLiveData<List<Product>> productLiveData;
    private List<Product> productList;
    private Application application;

    private JsonArrayRequest productJsonArrayRequest;

    public ProductViewModel(@NonNull Application application) {
        super(application);
    }

    public MutableLiveData<List<Product>> getProductLiveData () {
        if(productLiveData == null) {
            productLiveData = new MutableLiveData<>();
            initialize();
        }
        return productLiveData;
    }

    private void initialize(){
        productJsonRequest();
        productLiveData.setValue(productList);
    }


    private void productJsonRequest() {

        productList = new ArrayList<>();


            JsonArrayRequest productsJsonArrayRequest = new JsonArrayRequest(Config.FETCH_PRODUCTS, new Response.Listener<JSONArray>() {
                @Override
                public void onResponse(JSONArray response) {

                    JSONObject jsonObject;

                    for (int i = 0; i < response.length(); i++) {

                        try {
                            jsonObject = response.getJSONObject(i);
                            Product product = new Product();

                            product.setId(jsonObject.getInt("id"));
                            product.setName(jsonObject.getString("name"));
                            product.setPrice(jsonObject.getDouble("price"));
                            product.setStock(jsonObject.getInt("stock"));
                            product.setCategoryId(jsonObject.getInt("categoryId"));
                            product.setCategory(jsonObject.getString("category"));
                            product.setPhoto(jsonObject.getString("photo"));

                            productList.add(product);


                        } catch (JSONException e) {
                            e.printStackTrace();
                        }
                    }
                }
            }, new Response.ErrorListener() {
                @Override
                public void onErrorResponse(VolleyError error) {
                    error.printStackTrace();
                }
            });


            RequestQueue productRequestQueue = Volley.newRequestQueue(this);
            productRequestQueue.add(productsJsonArrayRequest);
    }
} 

问题在这里

RequestQueue productRequestQueue = Volley.newRequestQueue(this);

android json android-studio viewmodel android-viewmodel
1个回答
0
投票
RequestQueue productRequestQueue = Volley.newRequestQueue(getApplication());
© www.soinside.com 2019 - 2024. All rights reserved.