1

GeoCoderを使用して、ユーザーの入力から住所を表示するアプリケーションを構築しています。ここに私が作ったコードの一部:

Geocoder gc = new Geocoder(getBaseContext(), Locale.getDefault());

List<Address> addresses = null;
StringBuilder sb = new StringBuilder();
String destination = edittext_destination.getText().toString();

try {
    addresses = gc.getFromLocationName(destination, 10);
} catch (Exception e){
    Toast.makeText(getBaseContext(), "Address not found", Toast.LENGTH_SHORT).show();
}

上記のコードは機能していますが、結果が返るまでに時間がかかります。結果を待っている間、進行状況スピナーを表示したい。Threadを使用する必要があることはわかっていますが、開始方法がわかりません。誰かが助けてくれることを願っています。

ありがとうございました

4

2 に答える 2

1

あなたはそれを行うことができますAsyncTask

    final String destination = edittext_destination.getText().toString();
    new AsyncTask<String, Void, List<Address>>() {
        private Dialog loadingDialog;

        @Override
        protected void onPreExecute() {
            super.onPreExecute();
            loadingDialog = ProgressDialog.show(TestActivity.this, "Please wait", "Loading addresses...");
        }

        @Override
        protected List<Address> doInBackground(String... params) {
            String destination = params[0];
            try {
                Geocoder gc = new Geocoder(getBaseContext(),
                        Locale.getDefault());
                return gc.getFromLocationName(destination, 10);
            } catch (Exception e) {
                return null;
            }
        }

        @Override
        protected void onPostExecute(List<Address> addresses) {
            loadingDialog.dismiss();

            if (addresses == null) {
                Toast.makeText(getBaseContext(), "Geocoding error",
                        Toast.LENGTH_SHORT).show();
            } else if (addresses.size() == 0) {
                Toast.makeText(getBaseContext(), "Address not found",
                        Toast.LENGTH_SHORT).show();
            } else {
                // Do UI stuff with your addresses
                Toast.makeText(getBaseContext(), "Addresses found: " + addresses.size(), Toast.LENGTH_SHORT).show();
            }
        }
    }.execute(destination);
于 2012-11-20T09:57:02.580 に答える