Q:

How to access values defined in AsyncTask from an activity

I have code like this
@Override
public void onCreate(Bundle savedInstanceState) {
     addItemsOnSpinnerOrgaLevel();

      btn_getReport.setOnClickListener(new OnClickListener() {
    @Override
    public void onClick(View v) {

            //How can i access map and list defined in orgaLevelTask(AsyncTask)???
             Like
             String option = parent.getItemAtPosition(pos).toString();              
            int orgaCode = orgaLevelMap.get(option);

            // Both are defined in AsyncTask ??

    }); //end of anonymous class

} //end of onCreate()

public void  addItemsOnSpinnerOrgaLevel() {

    orgaLevelTask  = new OrgaLevelTask(AccountReportActivity.this, spinner_orgaLevel, spinner_branch, txt_extra, txt_extra1);       
    orgaLevelTask.execute();

} //end of addItemsOnSpinnerOrgaLevel()

In AsyncTask onPostExecute() Method i have
@Override
protected void onPostExecute(ArrayList<OrgaLevel> result) {     
    super.onPostExecute(result);                        
    if (result != null) {               
        addItemsOnSpinnerOrgaLevel(result);                                     
    } 
    dialog.dismiss();   
} //end of onPostExecute()

 public void  addItemsOnSpinnerOrgaLevel(ArrayList<OrgaLevel> result) {

    orgaLevelElementslist = new ArrayList<String>();
    orgaLevelElementslist.add("All");
    orgaLevelMap = new HashMap<String, Integer>();
    orgaLevelMap.put("All", 0);

    for (int i=0; i<result.size(); i++) {

        OrgaLevel orgaLevelRecord = (OrgaLevel) result.get(i);
        String key = orgaLevelRecord.getOrgaName();
        String value = orgaLevelRecord.getOrgaCode();

        orgaLevelMap.put(key, Integer.parseInt(value));             
        orgaLevelElementslist.add(key);

    } //end of for()

    ArrayAdapter<String> dataAdapter = new ArrayAdapter<String>(accountReportActivity, android.R.layout.simple_spinner_item, orgaLevelElementslist);
    dataAdapter.setDropDownViewResource(android.R.layout.simple_spinner_dropdown_item);
    spinner_orgaLevel.setAdapter(dataAdapter);

    setSpinnerOrgaLevelListener();

} //end of addItemsOnSpinnerOrgaLevel()

private void setSpinnerOrgaLevelListener() {

    spinner_orgaLevel.setOnItemSelectedListener(new OnItemSelectedListener() {

        @Override
        public void onItemSelected(AdapterView<?> parent, View view, int pos,long id) {             
            String option = parent.getItemAtPosition(pos).toString();               
            int orgaCode = orgaLevelMap.get(option);            
            subOrgaLevelTask  = new SubOrgaLevelTask(accountReportActivity, spinner_branch, orgaCode);      
            subOrgaLevelTask.execute();             

        } //end of onItemSelected()

    }); //end of anonymous class

} //end of setSpinnerOrgaLevelListener()

In the subOrgaLevelTask i also have the same hash map as in this class. You can see that what i am trying to do is, put a key value in spinner. So when my btn_getReport button get click then i get the value of the selected item. Like if All is slected then i get 0 and so on. This key value thing is working. The problem is when btn_getReport get click then how can i get the value of the selected item. Because i am filling items in a background thread(In OrgaLevelTask and SubOrgaLevelTask) and my button is in Activity. So how can i do that when button get click, then i get the values from the map defined in OrgaLevelTask and SubOrgaLevelTask ?
Thanks

A:

well, make them public in orgaLevelTask, and simply access them. orgaLevelTask should be a variable in you activity class. Have you tried it? any errors?
You must make sure orgaLevelTask members will be accessed in thread safe manner

