Visualización de un ProgressDialog mientras se espera un subproceso unido

En mi actividad, cargo el contenido para una lista de una base de datos y quiero mostrar un ProgressDialog mientras se está cargando.
Conseguí que ambos trabajaran por su cuenta, pero si cargo los datos en un hilo (¿qué debo hacer?), La lista se muestra antes de que se carguen los datos. Pero si uso join, el ProgressDialog ni siquiera aparece.

¿Cómo puedo combinar esto? ¿O esto no es posible en absoluto con hilos? (AsyncTask tal vez?)

Aquí está el código de referencia:

    final ProgressDialog progressD=ProgressDialog.show(ShopSwitchActivity.this, "", "Loading..", true);

    Thread myThread = new Thread(new Runnable() {  
        @Override
        public void run() {
          try
          {
              getData();
          }catch(Exception e){}
        }
    });
    myThread.start();

    try {
            myThread.join();
    } catch (InterruptedException e) {
    }
    progressD.dismiss();

EDITAR: Código actualizado con AsyncTask:

public class LoadList extends AsyncTask<String, Void, Boolean> {

    ProgressDialog dialog;
    ShopSwitchActivity activity;

    public LoadList(ShopSwitchActivity activity) {
        this.activity = activity;
        dialog = new ProgressDialog(activity);
    }

    protected void onPreExecute() {
        this.dialog.setMessage("Loading...");
        this.dialog.show();
    }

        @Override
    protected void onPostExecute(final Boolean success) {
        if (dialog.isShowing()) {
            dialog.dismiss();
        }
    }

    protected Boolean doInBackground(final String... args) {
        try{
       activity.getData();
        } catch (Exception e) {
            Log.e("error", e.getMessage());
        }
       return true;
    }
}

Editar: Mi solución Utilizando AsyncTask ahora para cargar los datos, y después de que termine, actualizo la lista con los nuevos datos.

Respuestas a la pregunta(4)

Su respuesta a la pregunta