А чему тут удивляться? У вас адаптер объявлен в методе onCreate
...
SimpleAdapter sa = new SimpleAdapter(this, data, R.layout.item_view,from, to);
...
То есть переменная sa - локальная для onCreate: в других методах ее не видно. Вам нужно объявить sa как поле данного класса: перенесите объявление туда же где находится data. То есть вот так:
...
ArrayList<Map<String, String>> data;
SimpleAdapter sa;
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
String[] from = { KEY_CHAR_CODE, KEY_VALUE, KEY_NOMINAL, KEY_NAME };
int[] to = { R.id.charCodeView, R.id.valueView, R.id.nominalView,R.id.nameView };
sa = new SimpleAdapter(this, data, R.layout.item_view,from, to);
new NewThread().execute();
}
...