getInfoContents возвращает ноль при первом нажатии на маркер - PullRequest
0 голосов
/ 08 мая 2019

Я пытаюсь щелкнуть маркер, показанный на картах Google, и получить все данные с сервера об этом маркере. Проблема в том, что первый раз, когда я нажимаю на маркер, он возвращает ноль, а во второй раз, когда я нажимаю на другой маркер, отображаются данные первогоПо какой-то причине мои переменные устанавливаются первыми, а после этого запускается очередь запросов залпов. Посмотрите на мой код

@Override
public void onMapReady(GoogleMap googleMap) {
    mGoogleMap=googleMap;
    if (mGoogleMap!=null){
        mGoogleMap.setOnMarkerClickListener(new GoogleMap.OnMarkerClickListener() {
            @Override
            public boolean onMarkerClick(Marker marker) {
                Log.e("marker","marker clicked"+marker.getPosition());
                marker.showInfoWindow();
                return false;
            }
        });
        mGoogleMap.setInfoWindowAdapter(new GoogleMap.InfoWindowAdapter() {
            @Override
            public View getInfoWindow(Marker marker) {
                return null;
            }

            @Override
            public View getInfoContents(final Marker marker) {

                View view= getLayoutInflater().inflate(R.layout.window,null);

                final TextView name= (TextView) view.findViewById(R.id.name);
                final TextView time= (TextView) view.findViewById(R.id.time);
                final TextView servic= (TextView) view.findViewById(R.id.servic);
                final TextView phone= (TextView) view.findViewById(R.id.contct);
                LatLng latLng=marker.getPosition();
                double lat=latLng.latitude;
                double lng=latLng.longitude;
                strlat=Double.toString(lat);
                strLng=Double.toString(lng);
                RequestQueue requestQueue=Volley.newRequestQueue(getApplicationContext());
                StringRequest stringRequest=new StringRequest(Request.Method.POST, CLICK, new Response.Listener<String>() {
                    @Override
                    public void onResponse(String response) {
                        JSONObject j = null;
                        try{
                            j =new JSONObject(response);
                            Log.e("workingg","i am inside request");
                            result = j.getJSONArray("FL");
                            for(int i=0;i<result.length();i++){
                                JSONObject jsonObject1=result.getJSONObject(i);
                                Double lat=jsonObject1.getDouble("10");
                                Double lng=jsonObject1.getDouble("11");
                                String lat_i = jsonObject1.getString("10");
                                String long_i = jsonObject1.getString("11");
                                String saloonName=jsonObject1.getString("1");
                                workingHoursclicked=jsonObject1.getString("8");
                                Log.e("workingg","Working hours "+workingHoursclicked);
                                descClicked=jsonObject1.getString("9");
                                cntctClicked=jsonObject1.getString("4");

                            }
                        }catch (NullPointerException e){
                            e.printStackTrace();
                        }
                        catch (JSONException e){
                            e.printStackTrace();
                        }
                    }
                }, new Response.ErrorListener() {
                    @Override
                    public void onErrorResponse(VolleyError error) {
                    Toast.makeText(Maps.this,""+error,Toast.LENGTH_LONG).show();
                    }
                }){
                    @Override
                    protected Map<String, String> getParams() throws AuthFailureError {
                        Map<String,String>map=new HashMap<>();
                        map.put("s_latitude",strlat);
                        map.put("s_longitude",strLng);
                        return map;
                    }
                };
                requestQueue.add(stringRequest);

                name.setText("Name : "+marker.getTitle());
                time.setText("Timings : "+workingHoursclicked);
                servic.setText("Services  : "+descClicked);
                phone.setText("Phone : "+cntctClicked);
                Log.e("workingg","Working hours are "+workingHoursclicked);
                return view;
            }
        });
    }
...