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();
}