有 Java 编程相关的问题?

你可以在下面搜索框中键入要查询的问题!

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

现在我正在制作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);

}

我是新手,不知道如何使用“Listener”,所以对我来说太难了。请帮帮我


共 (0) 个答案