为什么我的凌空呼叫成功后我的变量设置为null

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

我不知道为什么在Volley请求之后我的私有变量值将变为空

当我在onResponse中打印值时,我正在获取所需的值,但是在截击请求完成后,我得到了空值。

ListView userListView;
StringRequest stringRequest=null;
ProgressDialog progressDialog;
private String[] strUsername;
private String[] strUserItems;
private String[] strUserImagePaths;

@Override
protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.activity_user_listing);

    userListView=findViewById(R.id.userListView);
    progressDialog=new ProgressDialog(this);

    StrictMode.setThreadPolicy((new StrictMode.ThreadPolicy.Builder().permitNetwork().build()));
    displayUserListing();
    UserListCustomViewAdapter viewAdapter=new UserListCustomViewAdapter(this,strUsername,strUserImagePaths,strUserItems);

    userListView.setAdapter(viewAdapter);
}

private void displayUserListing()
{
    progressDialog.setMessage("Getting User List...");
    progressDialog.show();

    stringRequest=new StringRequest(
            Request.Method.GET, Constants.URL_GetUserList, new Response.Listener<String>()
    {
        @Override
        public void onResponse(String response)
        {
            progressDialog.dismiss();
            try {
                Log.d("first","before");
                JSONArray jsonObj=new JSONArray(response);
                strUsername=new String[jsonObj.length()];
                strUserItems=new String[jsonObj.length()];
                strUserImagePaths=new String[jsonObj.length()];
                String str=null;
                for(int i=0;i<jsonObj.length();i++)
                {
                    JSONObject jsonObject=jsonObj.getJSONObject(i);
                    strUsername[i]=jsonObject.getString("user_name");
                    strUserItems[i]=jsonObject.getString("user_item");
                    strUserImagePaths[i]=jsonObject.getString("user_image_path");
                    str+=strUsername[i];
                }
                Log.d("first","after"+str);

            }catch (Exception e)
            {
                e.printStackTrace();
            }
        }
    }, new Response.ErrorListener()
    {
        @Override
        public void onErrorResponse(VolleyError error)
        {
            progressDialog.hide();
            Log.d("myerror","I got some error");
            NetworkResponse networkResponse = error.networkResponse;
            Log.d("myerror1",error.getMessage());
            // Toast.makeText(getApplicationContext(),error.getMessage().toString(),Toast.LENGTH_LONG).show();
        }
    })
    {
        @Override
        protected Map<String, String> getParams() throws AuthFailureError
        {

            Map<String,String> params=new HashMap<String,String>();
            params.put("struserid","1");
            //params.put("serviceid","1");

            return params;
        }

    };

    RequestHandler.getInstance(this).addToRequestQueue(stringRequest);

}
android-studio android-volley
1个回答
0
投票
我认为您在初始化变量之前正在使用变量。解析值后调用适配器。
© www.soinside.com 2019 - 2024. All rights reserved.