0

我正在开发一个使用Google Places API的Android 应用程序。一旦我得到所有地点的结果,我想根据算法对其进行排序。也就是说,如果算法> = 0,则位置结果只会被放入。但现在的问题是,当我运行它时,for循环中的算法结果在循环期间没有改变。Hash Map

我的算法是: balance = user_hour-visi-duration. balance = 240-60-20 = 160

假设余额为 160,它将保持 160 直到 for 循环结束。我希望每次循环时,余额的值都会减少直到负值。仅供参考,平衡变量不是局部变量。

有谁知道如何解决这个问题?这是代码的一部分。

// loop through each place
                        for (Place p : nearPlaces.results) {
                            balance = user_hour - duration - visit;
                            HashMap<String, String> map = new HashMap<String, String>();

                            //////////////////////////////////////////////////////////////////
                            googlePlaces = new GooglePlaces();
                            try {
                                placeDetails = googlePlaces.getPlaceDetails(p.reference);

                            } catch (Exception e) {
                                e.printStackTrace();
                            }

                            if(placeDetails != null){

                                String statuss = placeDetails.status;

                                // check place deatils status
                                // Check for all possible status
                                if(statuss.equals("OK")){




                                        lat = gps.getLatitude();
                                        lang = gps.getLongitude();
                                        double endlat = placeDetails.result.geometry.location.lat;
                                        double endlong = placeDetails.result.geometry.location.lng;



                                        Location locationA = new Location("point A");
                                        locationA.setLatitude(lat);
                                        locationA.setLongitude(lang);
                                        Location locationB = new Location("point B");
                                        locationB.setLatitude(endlat);
                                        locationB.setLongitude(endlong);
                                        double distance = locationA.distanceTo(locationB)/1000;
                                        Double dist = distance;
                                        Integer dist2 = dist.intValue();
                                        //p.distance = String.valueOf(dist2);
                                        p.distance = String.valueOf(balance);
                                        dist3 = p.distance;





                                }
                                else if(status.equals("ZERO_RESULTS")){
                                    alert.showAlertDialog(MainActivity.this, "Near Places",
                                            "Sorry no place found.",
                                            false);
                                }
                                }

                                ///////////////////////////////////////////////////////////////



                            if (balance > 0){

                                // Place reference won't display in listview - it will be hidden
                                // Place reference is used to get "place full details"
                                map.put(KEY_REFERENCE, p.reference);
                                // Place name
                                map.put(KEY_NAME, p.name);
                                map.put(KEY_DISTANCE, p.distance);
                                // adding HashMap to ArrayList
                                placesListItems.add(map);


                                }

                            else {
                                //

                            }


                        }//end for loop
4

1 回答 1

0

你到底想在这里做什么?

balance = user_hour - duration - visit;在 for 循环之后的第一行。我看不到user_hour, durationorvisit的声明位置,但我假设它在循环之外。Place这意味着它对于每个in将始终是相同的值nearPlaces.results。如果此代码确实是您想要的,那么您不妨在循环之前声明它,因为您毫无意义地为每个Place.

除了将其打印出来或为其设置另一个值之外,您也从不做任何事情balance,因此很难计算出您期望发生的事情。

于 2013-02-27T08:43:09.257 回答