Почему мои переменные устанавливаются в ноль после успешного вызова - PullRequest
0 голосов
/ 12 февраля 2020

Я не понимаю, почему значения моей закрытой переменной становятся нулевыми после запроса залпа

Когда я печатаю значения в onResponse, я получаю необходимые значения, но после того, как запрос залпа завершен, я получаю значение NULL.

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

}

1 Ответ

0 голосов
/ 13 февраля 2020

Я думаю, что вы используете свои переменные перед инициализацией. Вызовите адаптер после анализа значения.

...