Залп показывает нулевую ошибку, когда активность загружается впервые - PullRequest
0 голосов
/ 20 октября 2018

Я вижу пейджер в своей активности Android и использую NodeJs и MongoDb в качестве фонового сервиса. Когда моя деятельность запускается впервые, она показывает ошибку залпа ноль, а когда я останавливаю свое приложение и запускаю его снова, загружаются изображения в представлении.пейджер и работает нормально.Почему он не получает данные с сервера при первом запуске активности.

Вот мой код:

MainActivity.java

public class MainActivity extends AppCompatActivity {

ViewPager viewPager;
TabLayout tab;

RequestQueue rq;
List<Model> list;
Adapter adapter;

String request_url = "https://example.com";


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

    rq = CustomRequest.getInstance(MainActivity.this).getRequestQueue();

    viewPager = findViewById(R.id.viewPager);
    tab = findViewById(R.id.tabLayout);

    list = new ArrayList<>();

    tab.setupWithViewPager(viewPager, true);

    final ProgressDialog prg = new ProgressDialog(MainActivity.this);
    prg.setMessage("Loading");
    prg.show();

    StringRequest stringRequest = new StringRequest(Request.Method.POST, request_url, new Response.Listener<String>() {
        @Override
        public void onResponse(String response) {

            prg.dismiss();

            try {
                JSONArray jsonArr  = new JSONArray(response);

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

                    Model model = new Model();

                    JSONObject jsonObject = jsonArr.getJSONObject(i);

                    model.setImage(jsonObject.getString("Image"));

                    list.add(model);

                }

                adapter = new Adapter((ArrayList<Model>) list, MainActivity.this);

                viewPager.setAdapter(adapter);

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

            prg.dismiss();

            Toast.makeText(getApplicationContext(),""+error.getMessage(),Toast.LENGTH_SHORT).show();
        }
    }){

        @Override
        protected Map<String, String> getParams() throws AuthFailureError {

            HashMap<String,String> params = new HashMap<>();

            params.put("place","Ajmer");

            return params;
        }
    };

    CustomRequest.getInstance(MainActivity.this).addToRequetQueue(stringRequest);
 }
}

Adapter.java

public class Adapter extends PagerAdapter {

ArrayList<Model> list = new ArrayList<>();
Context context;
LayoutInflater layoutInflater;

public Adapter(ArrayList<Model> list, Context context) {
    this.list = list;
    this.context = context;
}

@Override
public int getCount() {
    return list.size();
}

@Override
public boolean isViewFromObject(@NonNull View view, @NonNull Object o) {
    return view == o;
}

@NonNull
@Override
public Object instantiateItem(@NonNull ViewGroup container, final int position) {

    layoutInflater = (LayoutInflater) context.getSystemService(Context.LAYOUT_INFLATER_SERVICE);
    assert layoutInflater != null;
    View view = layoutInflater.inflate(R.layout.custom, null);

    Model model =  list.get(position);

    ImageView imageView = view.findViewById(R.id.imageView);

    Glide.with(context).load(model.getImage()).into(imageView);

    ViewPager vp = (ViewPager) container;
    vp.addView(view, 0);
    return view;
}

@Override
public void destroyItem(@NonNull ViewGroup container, int position, @NonNull Object object) {

    container.removeView((LinearLayout)object);
 }
}

Пожалуйста, кто-нибудь, дайте мне знать, почему я получаю эту проблему.

СПАСИБО

1 Ответ

0 голосов
/ 20 октября 2018

Вы инициализировали RequestQueue.если нет, добавьте следующий код перед запросом строки

RequestQueue queue = Volley.newRequestQueue(context);

После этого вызова добавьте queue.add после вызова запроса строки

queue.add(stringRequest);

Если ошибка все еще продолжается ... вывести ответный сигнал залпастановится ли он нулевым или нет.

...