Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/android/179.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Android 多个JSONArrayRequests_Android_Json - Fatal编程技术网

Android 多个JSONArrayRequests

Android 多个JSONArrayRequests,android,json,Android,Json,伙计们,我有一个大问题,我看不到自己能解决。 我有一个我称之为JSONArrayRequest的应用程序来填充列表,它运行良好。但是,当我单击列表中的某个项目时,它会将我带到另一个活动,当我尝试从新Activities的适配器类调用JSONArrayRequest时,调用会被跳过,就像忽略调用一样 请参见所附代码: ServiceProviderAdapter.Java public ServiceProviderAdapter(int rowLayout, Context context)

伙计们,我有一个大问题,我看不到自己能解决。 我有一个我称之为JSONArrayRequest的应用程序来填充列表,它运行良好。但是,当我单击列表中的某个项目时,它会将我带到另一个活动,当我尝试从新Activities的适配器类调用JSONArrayRequest时,调用会被跳过,就像忽略调用一样

请参见所附代码:

ServiceProviderAdapter.Java

public ServiceProviderAdapter(int rowLayout, Context context) {

        List<ServiceProvider> DetailsItems = new ArrayList<ServiceProvider>();
        sendJSONRequest();
        //LyInflater = LayoutInflater.from(context);

        this.rowLayout = rowLayout;
        this.mContext = context;
    }
在调用ServiceAdapter类的新实例之后,我添加了一个断点,在调用的构造函数上,我想用JSONArrayrequest返回的数据填充我的List对象。该活动正在视图中填充RecycleView

我不明白为什么它在我的第一个活动中起作用,但在新的通话中它被省略了

请帮帮忙

谢谢找到了解决方案:

  • 调用JSONArrayRequest并使用RecycleView时,由于在发送响应请求时没有网络连接,因此无法工作

  • 在为RecycleView设置适配器之前,必须异步调用JSON对象/数组调用,为此,必须 创建一个扩展AsyncTask的类并建立HTTP连接,一旦建立了连接并解析了响应,就可以为RecycleView设置适配器


  • 您是否尝试在回调方法onResponse和onErrorResponse中放置断点以查看是否执行了它?如果可能的话,也可以发布addToRequestQueue方法。我在回调中添加了断点,但光标甚至没有进入调用内部。addToRequestQueue是使用Volley库的AppController.java调用。请尝试清除项目,有时调试器会疯狂地停止工作…快速提问,我需要一些帮助来创建recycleview对象,请参阅上面的代码各位,我自己还没能解决这个问题。我甚至用一个JSONArrayRequest调用创建了一个新项目,但它不起作用。你能举个例子吗?因为同步是非常扩展的
    private void sendJSONRequest() {
    
        //List<ServiceProvider> serviceProviderList=new ArrayList<ServiceProvider>();
        JsonArrayRequest dq;
        //RequestQueue queue = Volley.newRequestQueue(mContext);
    
        dq= new JsonArrayRequest(url, new Response.Listener<JSONArray>() {
            @Override
            public void onResponse(JSONArray jsonArray) {
                serviceProviderList = parseJSONResponse(jsonArray);
                setDetailsItems(serviceProviderList);
            }
        }, new Response.ErrorListener() {
            @Override
            public void onErrorResponse(VolleyError volleyError) {
                VolleyLog.d("E", "Error: " + volleyError.getMessage());
            }
        });
    
    
    
    
        AppController.getInstance().addToRequestQueue(dq,"DetailJSONTag");
    
    
    }
    
     public <T> void addToRequestQueue(Request<T> req) {
        req.setTag(TAG);
        getRequestQueue().add(req);
    }
    
    public RequestQueue getRequestQueue() {
        if (mRequestQueue == null) {
            mRequestQueue = Volley.newRequestQueue(getApplicationContext());
        }
    
        return mRequestQueue;
    }
    
      AppController.getInstance().addToRequestQueue(dq,"DetailJSONTag");
    
    
     cardDetailActivity.Java
    
     @Override
        protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.card_list);
    
        //CardView cardView= (CardView) findViewById(R.id.card_view);
        RecyclerView recList = (RecyclerView) findViewById(R.id.cardList);
        recList.setHasFixedSize(true);
        LinearLayoutManager llm = new LinearLayoutManager(this);
        llm.setOrientation(LinearLayoutManager.VERTICAL);
        recList.setLayoutManager(llm);
    
        adapter=new ServiceProviderAdapter(R.layout.card_user_details,this);
        recList.setAdapter(adapter);
    
        pDialog = new ProgressDialog(this);
    
        if (llm.getItemCount()==0)
        {
    
            // Showing progress dialog before making http request
            pDialog.setMessage("Loading...");
            pDialog.show();
        }else{
            hidePDialog();
        }