如何在Android中编辑文本时在文本完成后调用方法

如何在Android中编辑文本时在文本完成后调用方法,android,android-edittext,Android,Android Edittext,我试图通过从编辑文本中获取输入来搜索地图上的位置,我有两个编辑文本;一个是源位置,另一个是目的地,当用户输入源目的地并移动到下一个(或者我们可以说焦点丢失)时,“用户输入的位置在地图上用标记指出” 但在这里,当我输入古吉拉特大学时,它将古吉拉特大学视为不同的价值观 et.addTextChangedListener(new TextWatcher() { @Override public void b

我试图通过从编辑文本中获取输入来搜索地图上的位置,我有两个编辑文本;一个是源位置,另一个是目的地,当用户输入源目的地并移动到下一个(或者我们可以说焦点丢失)时,“用户输入的位置在地图上用标记指出”

但在这里,当我输入古吉拉特大学时,它将古吉拉特大学视为不同的价值观

et.addTextChangedListener(new TextWatcher() {
                        @Override
                        public void beforeTextChanged(CharSequence s, int start, int count, int after) {

                        }

                        @Override
                        public void onTextChanged(CharSequence s, int start, int before, int count) {
                           // findPlaceWaypoints();
                        }

                        @Override
                        public void afterTextChanged(Editable s) {
                            findPlaceWaypoints();
                        }
                    });
但它搜索每个单词,即MADHYA PRADES,然后搜索MADHYA和PRADES以及与MADHYA PRADES相关的所有可能单词。我想将所有文本都转换为一个值,该值在编辑文本中键入

这是我的findPlaceWaypoints方法:

 private void findPlaceWaypoints() {
        String location = et.getText().toString().toLowerCase();
        if (location == null || location.equals("")) {
            //  Toast.makeText(getBaseContext(), "No Place is entered", Toast.LENGTH_SHORT).show();
            return;
        }
        String url = "https://maps.googleapis.com/maps/api/geocode/json?";
        try {
            // encoding special characters like space in the user input place
            location = URLEncoder.encode(String.valueOf(location), "utf-8");
        } catch (UnsupportedEncodingException e) {
            e.printStackTrace();
        }
        String address = "address=" + location;
        String sensor = "sensor=true";

        // url , from where the geocoding data is fetched
        url = url + address + "&" + sensor;

        // Instantiating DownloadTask to get places from Google Geocoding service
        // in a non-ui thread
        DownloadTask downloadTask = new DownloadTask();

        // Start downloading the geocoding places
        downloadTask.execute(url);
    }

试试这个,它可能会帮助你:

edSearch.addTextChangedListener(new TextWatcher() {
            @Override
            public void beforeTextChanged(CharSequence s, int start, int count, int after) {
            }

            @Override
            public void onTextChanged(CharSequence s, int start, int before, int count) {
                String strname = edSearch.getText().toString().toLowerCase();

            }

            @Override
            public void afterTextChanged(Editable s) {
            }
        });

我认为它与edittext无关,它与地理编码api有关。它通常发送的响应是一组对象(位置),如下面的模板

results[]: {
 types[]: string,
 formatted_address: string,
 address_components[]: {
   short_name: string,
   long_name: string,
   postcode_localities[]: string,
   types[]: string
 },
 partial_match: boolean,
 place_id: string,
 postcode_localities[]: string,
 geometry: {
   location: LatLng,
   location_type: GeocoderLocationType
   viewport: LatLngBounds,
   bounds: LatLngBounds
 }
}
这些对象是与查询匹配的所有位置(即MADHYA PRADES、MADHYA、PRADES)

您可以检查响应对象中名为“partial_match”的字段是否完全匹配。如果部分匹配为false,则为精确匹配,否则为部分匹配


希望这能有所帮助。

您能详细解释您的查询吗?您需要它进行搜索吗?如果您使用与古吉拉特邦大学相同的编辑文本编写,请向我们展示您在
findPlaceWaypoints()中编写的代码方法见我在主要问题中添加的thx for the Efforts仍然将每个单词视为不同的值,