According to your post, telling how to declae ArrayList will not enough as you have some methods like onPreExecute() which is a method ofAsyncTask Interface. 
Look at this,
public class MainActivity extends ActionBarActivity {
ArrayList<String> arrayList; // declaring ArrayList here
ArrayAdapter<String> adapter;
@Override
protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.activity_main);
    arrayList = new ArrayList<String>(); // Initializing arrayList
    arrayList.add("initial text"); // adding a data to arrayList
    ListView listView = (ListView)findViewById(R.id.listView);
    adapter = new ArrayAdapter<String>(this,android.R.layout.simple_list_item_1,arrayList); // setting the arrayList in ArrayAdapter
    listView.setAdapter(adapter);
    new LongOperation().execute(); // async Task
}
  private class LongOperation extends AsyncTask<Void, Void, Void> {
    ProgressDialog progressDialog = new ProgressDialog(MainActivity.this);
    // progress dialog starts here
    @Override
    protected void onPreExecute() {
        super.onPreExecute();
    progressDialog.setMessage("Loading...");
    progressDialog.show();
    }
    @Override
    protected Void doInBackground(Void... voids) {
        // for understanding purpose, i made a thread to sleep for 5 sec and later it will add A,B & C to ArrayList.
        try {
            Thread.sleep(5000);
        } catch (InterruptedException e) {
            e.printStackTrace();
        }
       // adding few more items to arrayList
        arrayList.add("A");
        arrayList.add("B");
        arrayList.add("C");
        return null;
    }
    @Override
    protected void onPostExecute(Void aVoid) {
        super.onPostExecute(aVoid);
        progressDialog.dismiss(); // dismissing the progress Dialog
        adapter.notifyDataSetChanged(); // refreshing listview
        readA(); // read the arrayList 
    }
}
public void readA()
{
    for (int i = 0; i<arrayList.size(); i++)
    {
        Log.d("key",arrayList.get(i));
    }
}
}
Output : 
If you run the above code, Initially your list view will only contain only one item & after 5 sec loading it will add another 3 items. The below information will print in logcat that reads the ArrayList.
04-13 14:07:32.395    1123-1123/? D/key﹕ initial text
04-13 14:07:32.395    1123-1123/? D/key﹕ A
04-13 14:07:32.395    1123-1123/? D/key﹕ B
04-13 14:07:32.395    1123-1123/? D/key﹕ C