0

i create app for location base data i'm using geocoder to fetch places data but its hang for 3 or 4 seconds but after loads data correctly

its android studio java based for getting city name or district from geocoder
after freez its gets results correctly


public void getLocation(String type) {

    List<String> items = new ArrayList<>();
    Dialog dialog = new Dialog(buyersetting.this, android.R.style.Theme_Light);
    dialog.requestWindowFeature(Window.FEATURE_NO_TITLE);
    dialog.setContentView(R.layout.location_dialog);
    dialog.show();
    ListView listView = (ListView) dialog.findViewById(R.id.listview);
    EditText etsearch = dialog.findViewById(R.id.searcchloc);
    etsearch.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) {

        }

        @Override
        public void afterTextChanged(Editable s) {
            Geocoder geocoder = new Geocoder(buyersetting.this, Locale.getDefault());
            try {
                List<Address> result = geocoder.getFromLocationName(s.toString(), 10);
                if ((result == null) || (result.isEmpty())) {

                } else {
                    items.clear();

                    for (int i = 0; i < result.size(); i++) {
                        items.add(result.get(i).getLocality());
                    }

                    MyArrayAdapter adapter = new MyArrayAdapter(buyersetting.this, android.R.layout.simple_list_item_1, items);
                    listView.setAdapter(adapter);
                    listView.setOnItemClickListener(new AdapterView.OnItemClickListener() {
                        @Override
                        public void onItemClick(AdapterView<?> parent, View view, int position, long id) {
                            if (type == "city")
                                bind.city.setText(parent.getItemAtPosition(position).toString());
                            if (type == "dist") {
                                bind.dist.setText(parent.getItemAtPosition(position).toString());
                            }
                            dialog.dismiss();
                        }
                    });

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


    dialog.show();


}
Noor Azam
  • 1
  • 1

0 Answers0