如何从监听器接收结果(java)

时间:2016-05-19 12:01:27

标签: java android

现在我正在制作Android应用程序,但我无法自行解决。

此应用程序从Web应用程序接收包含位置信息的Json,使用GSON解析它,并检查其经度和纬度。

现在应用程序可以接收Json并解析它,但我不知道如何使用比较结果。

public boolean checkArea(final LatLng latLng) {

    EventsClient client = new EventsClient();
    EventsClient.RequestObj requestObj = client.getRequestObj(
            Constants.SAMPLE_ACCOUNT_EMAIL,
            Constants.SAMPLE_ACCOUNT_AUTHENTICATION_TOKEN
    );
    client.setListener(new BaseClientListener() {
        @Override
        public void returnValue(int errorCode) {
            Log.d(getClass().getSimpleName(), "listener error:" + errorCode);
        }

        @Override
        public boolean returnValue(String result) {
            Log.d(getClass().getSimpleName(), "listener result:" + result);

            Boolean insideCheck = false;

            Gson gson = new Gson();
            Type collectionType = new TypeToken<Collection<ResponseObj>>(){}.getType();
            List<ResponseObj> eventData = gson.fromJson(result, collectionType);

            for(ResponseObj responseObj : eventData){
                double eventLng = Double.valueOf(responseObj.getLongitude());
                double eventLat = Double.valueOf(responseObj.getLatitude());

                double eventLngRangeMax = eventLng + (500 / 30.8184 * 0.000277778);
                double eventLngRangeMin = eventLng - (500 / 30.8184 * 0.000277778);
                double eventLatRangeMax = eventLat + (500 / 25.2450 * 0.000277778);
                double eventLatRangeMin = eventLat - (500 / 25.2450 * 0.000277778);

                if (eventLatRangeMin < latLng.latitude && latLng.latitude < eventLatRangeMax && eventLngRangeMin < latLng.longitude && latLng.longitude < eventLngRangeMax) {
                    Log.d("chkArea", "inside area");
                    insideCheck = true;
                } else {
                    Log.d("chkArea", "outside area");
                    insideCheck = false;
                }

            }
        return insideCheck;
        }
    });
    client.getRequest(requestObj);
    // I want use "insideCheck" here!! <-----
}

调用checkArea(final LatLng latLng)的课程:

public void onLocationChanged(Location location) {

  if (checkArea(new LatLng(location.getLatitude(), location.getLongitude()))) {

      sendInformation(); //
  }
}

BaseClientListener

public interface BaseClientListener {
    abstract public void returnValue(int errorCode);

    abstract public boolean returnValue(String result);

}

我是菜鸟,并且不知道使用方式的详细信息&#34; Listener&#34;所以这对我来说太难了。请帮帮我!

0 个答案:

没有答案