Member 11642465 Ответов: 1

Получение только последнего значения Индекса arraylist после события click?


Привет Друзья,

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


Спасибо

Что я уже пробовал:

/***************************************Authenticating**************************************/
    private void authenticateUser() {

        HttpPost request = new HttpPost(LOCATION_URL);
        request.setHeader("Accept", "application/json");
        request.setHeader("Content-type", "application/json");

        // Build JSON string
        JSONObject jsonObject = null;
        try {
            InputStream inputStream = null;

            // Fetching Data From DB
            DataBaseHelper myDBHelper = new DataBaseHelper(getActivity());
            myDBHelper.open();
            LoginTable loginTable= new LoginTable();
            loginTables= myDBHelper.getAllLoginRecord();
            if(loginTables.size()>0) {
                loginTable = loginTables.get(0);
                USER_ID=loginTable.userId;
                user_type=loginTable.usertype;
            }
            myDBHelper.close();

            result = "";
            JSONStringer userJson = new JSONStringer()
                    .object().key("latitude").value(latitude).key("longitute").value(longitude).key("user_id").value(USER_ID)
                    .key("distance").value(5).key("start_limit").value(0).key("end_limit").value(20)
                    .endObject();
            StringEntity stringEntity = null;
            stringEntity = new StringEntity(userJson.toString());
            request.setEntity(stringEntity);

            DefaultHttpClient httpClient = new DefaultHttpClient();

            HttpResponse response = httpClient.execute(request);

            int statusCode = response.getStatusLine().getStatusCode();
            if (statusCode == 200) {
                result = EntityUtils.toString(response.getEntity());

                if (result.contains("false")) {
                    AuthenticationStatus = true;
                    //a= result.substring(1,(result.length()-1)).replaceAll("\\\\","");
                    jsonObject = new JSONObject(result);
                    error = jsonObject.getString("error");
                    JSONArray jsonArray = jsonObject.getJSONArray("saloon_list");
                    int k = jsonArray.length();
                    for (int i = 0; i < k; i++) {
                        obj = new LatLngBean();
                        //write parsing code here.
                        JSONObject jsonObject1 = jsonArray.getJSONObject(i);
                        obj.Latitude = jsonObject1.getString("saloon_latitude");
                        obj.Longitude = jsonObject1.getString("saloon_longitute");
                        obj.Title = jsonObject1.getString("saloon_name");
                        obj.SaloonId=jsonObject1.getString("saloon_id");
                        obj.gender=jsonObject1.getString("gender");
                        obj.RunningToken = jsonObject1.getString("running_token");
                        obj.Inqueue = jsonObject1.getString("inquee");
                        obj.Ratings = jsonObject1.getString("rating");
                        obj.onlinestatus = jsonObject1.getString("saloon_online_status");
                        searchlist.add(obj);

                    }
                } else {
                    AuthenticationStatus = false;
                }
            } else {
                AuthenticationStatus = false;
            }
            Log.d("WebInvoke", result);
        } catch (IOException e) {
            e.printStackTrace();
        } catch (JSONException e) {
            e.printStackTrace();
        }
    }


    // AsyncTask method for service execution
    private class AsyncLocation extends AsyncTask<String, Void, Void> {

        private ProgressDialog dialog;

        @Override
        protected void onPreExecute() {
            dialog = new ProgressDialog(getActivity());
            dialog.setTitle("Please Wait");
            dialog.setMessage("Loading...");
            dialog.setProgressStyle(ProgressDialog.STYLE_SPINNER);
            dialog.setCancelable(false);
            dialog.setIndeterminate(false);
            dialog.show();
        }

        @Override
        protected Void doInBackground(String... params) {
            authenticateUser();
            return null;
        }

        @Override
        protected void onPostExecute(Void result1) {

            if (dialog.isShowing()) {
                dialog.dismiss();
            }

            int size = searchlist.size();
            for (int i = 0; i < size; i++) {

                // Calculating distance between saloon and user
                destlangitude = Double.valueOf(searchlist.get(i).Latitude);
                destlongitude = Double.valueOf(searchlist.get(i).Longitude);
                int Radius = 6371;
                double dLat = Math.toRadians(destlangitude - latitude);
                double dLon = Math.toRadians(destlongitude - longitude);
                double a = Math.sin(dLat / 2) * Math.sin(dLat / 2)
                        + Math.cos(Math.toRadians(latitude))
                        * Math.cos(Math.toRadians(destlangitude)) * Math.sin(dLon / 2)
                        * Math.sin(dLon / 2);
                double c = 2 * Math.asin(Math.sqrt(a));
                double valueResult = Radius * c;
                double km = valueResult / 1;
                DecimalFormat newFormat = new DecimalFormat("####");
                int kmInDec = Integer.valueOf(newFormat.format(km));
                double meter = valueResult % 1000;
                double finalmeter = meter * 1000;
                int meterInDec = Integer.valueOf(newFormat.format(meter));
                title = searchlist.get(i).Title;
                destination = new LatLng(destlangitude, destlongitude);

                if (km < 1) {
                    MarkerOptions destoptions = new MarkerOptions().title(title).snippet(String.format("%.2f", finalmeter) + "m").position(destination).anchor(.5f, .5f).draggable(true)
                            .icon(BitmapDescriptorFactory.fromResource(R.drawable.ic_shop_salon));
                    myMap.addMarker(destoptions);
                } else {

                    MarkerOptions destoptions = new MarkerOptions().title(title).snippet(String.format("%.2f", km) + "km").position(destination).anchor(.5f, .5f).draggable(true)
                            .icon(BitmapDescriptorFactory.fromResource(R.drawable.ic_shop_salon));
                    myMap.addMarker(destoptions);
                }

                String salStatus = searchlist.get(i).onlinestatus;

                if (salStatus.equals("1")) {

                    myMap.setOnInfoWindowClickListener(new GoogleMap.OnInfoWindowClickListener() {
                        @Override
                        public void onInfoWindowClick(Marker marker) {

                            //myMap.setContentDescription(searchlist.get(i).Title);

                            Intent intent = new Intent(getActivity(), BookATime.class);
                            intent.putExtra("running_token", obj.RunningToken);
                            intent.putExtra("inquee", obj.Inqueue);
                            intent.putExtra("rating", obj.Ratings);
                            intent.putExtra("saloon_id", obj.SaloonId);
                            intent.putExtra("saloon_latitude", obj.Latitude);
                            intent.putExtra("saloon_longitute", obj.Longitude);
                            intent.putExtra("saloon_name", obj.Title);
                            intent.putExtra("gender", obj.gender);
                            startActivity(intent);

                        }
                    });
                }
            }
        }
    }

Richard MacCutchan

И где-то в этом коде есть проблема?

Member 11642465

после нажатия на маркер для отправки данных из одного вида деятельности в другой я получаю только последнее значение индекса для каждого маркера @ Richard MacCutchan

1 Ответов

Рейтинг:
1

David Crow

Где находится код, который выполняется при нажатии на карту (маркер)? Откуда берется значение индекса?